C言語 配列を使ったテストの点数のプログラム例【基本】

プログラミング

 

前回は配列の簡単な書き方と考え方を解説しました。配列は、種類の似ている大量の値を管理するのに大変便利です。これにより、いちいち変数名を考えたりすることもないし、for文を使えば書くことも省くことが出来ます。

 

今回は、実際に配列が役に立つプログラムを書いて使っていきましょう。作っていくプログラムは「任意の人数の点数を入力し平均点を出す」というものです。それでは1から作っていきましょう。かなり細かく解説しているので少し長くなります。

 

配列を宣言して人数を入力してもらう

 

まずは配列を宣言しましょう。今回作成するプログラムは「生徒の点数の合計点と平均点を求める」プログラムなので、点数を格納する配列名は tensu としましょう。またそのほかにも、任意の人数に対応できるように変数ninzuを、合計を求めるために変数goukeiを、平均を求めるために変数heikinを宣言します。

ここで、すでにtensu[100]というふうに要素数を決めてしまっています。これには理由があります。配列を宣言するときは、必ず要素数を決めておかなければいけません。また、[]の中には整数しか入れられないので、tensu[i]として後から変数iに値を代入して決めることもできません。

 

なので、「余裕を持った要素数を設定しておく」という手段をとります。今回の場合は、100を要素数に設定しておきます。あくまで個人が試験的にやるものなので「さすがに100人を超える点数をわざわざ入力しないだろう」という考えからです。この辺は個人の裁量によるものなので適当でいいです。

 

人数は do while文でループして入力してもらいます。条件式は、人数が配列の要素数の関係から1人~100人までなので、「ninzu<1あるいはninzu>100」のときにループするようにします。そのときif文で、「1~100人で入力してください」と表示してもう一度入力する必要があることを記述します。

 

配列に点数を入力してもらい平均と合計を求める

 

次に、人数分のテストの点数を入力してもらいます。こちらも上のdo while文とほとんど同じように、「順番に点数を入力してもらい、点数が0点から100点の範囲を超える場合はもう一度入力し直してもらう」の構成でいきます。点数が範囲外の場合はif文で「点数は0~100までで入力してください」と表示して、もう一度入力する必要があることを知らせます。

 

最後に、簡単に合計値と平均値を計算して最初に宣言したgoukeiとheikinに代入します。ちなみに合計はfor文で配列tenzu[i]をi(=0~ninzu)で回して順番に足していきます。goukei+=tensu[i]はgoukei=goukei+tensu[i]をあらわします

完成ソースコード

ここでは、今まで書いてきたコードを組み合わせた全体のソースコードを書いています。本当にただ組み合わせただけですが、全体の流れをざっと見て理解できなところがないか確認してください。

 

以下が実行結果です。

実行結果では、生徒の人数を入力するとき、わざと範囲外の0人を入力してdo while文がちゃんと機能しているのかどうか確認しました。点数を入力するときも同じようにわざと200点と入力することでdo whiel文が機能しているかを確認します。そして最後に合計点と平均点が正しいのかを確認すれば完成です。

コメント