7.配列

 配列では、一つの名前で複数の値を入れる事が出来ます。Aという配列で、0番目の値はA[0]、 1番目の値をA[1]、2番目の値をA[2]、 i番目の値をA[i] と指定します。ここでAの何番目かを指定する[ ]内の文字を添え字と呼びます。配列では複数の値を添え字だけを変えることで扱える利点があります。


(1) 配列の宣言
 配列を使う場合にも変数と同じように宣言が必要です。例えば、次の様に宣言します。

 int x[10], y[5];

 上の例では、xは大きさが10、yは5の配列で、xはx[0], x[1], ..., x[9]が使えます。yはy[0], y[1],... , y[4]が使えます。

(2) 配列への代入文
 配列に値を代入するには、添え字を使って次のように代入します。

 x[0] = 10;
 x[1] = 4;

(3) 配列の初期値の設定
 配列の初期値を設定するには次のように宣言文に書きます。

 int y[4] = {5, 2, 1, 4};

 上記の場合、y[0]には5が、y[1]には2、y[2]とy[3]にはそれぞれ、1, 4が入ります。

(4) 配列を使ったプログラム例(配列に格納した値を表示するプログラム)
 新しいプロジェクトno10にソースファイルlist1.cを追加して次のプログラムを入力してください。

実行結果は次のようになります。

9行目で配列dataを宣言するとともに初期値を設定しています。11行目からのforの繰り返しで配列dataの値をdata[0]からdata[7]まで順に表示していきます。この様に配列はforやwhileの繰り返しと一緒に用いることでプログラムを簡潔に書くことに役立ちます。もしこのプログラムで配列dataの代わりに変数を使うとしたら、data0, data1,... ,data7までの8つの変数が必要になり、変数は配列の様に添え字で指定できないので、for文は使えません。(dataiと書いたらdataiという名前の変数として扱われます。)よって、printf文も8つ必要になります。

演習1 宣言文で整数型の配列dataを次の様に初期値を設定し、この8つの値の平均を表示するプログラムを作成せよ。平均の値は小数点以下第1位まで表示するものとする。
 int data[8]={59,45,33,49,25,89,29,77};
※こうした問題は配列の初期値が変わっても答えが出るようにプログラムすること。

演習2 宣言文で整数型の配列dataを次の様に初期値を設定し、この8つの値の最大値、最小値、平均を表示するプログラムを作成せよ。平均の値は小数点以下第1位まで表示するものとする。なお、この数値は100点満点のテストの数値と仮定する。

 int data[8]={59,45,33,49,25,89,29,77};

(5) 配列を使ったプログラム例2 (線形探索法)
 配列の中に入っている値の探索を行うプログラムを考えましょう。いま、整数型の配列dataに10個のデータが初期値で設定されているとします。その中でxで指定された数値が何番目に入っているかを探すプログラムを考えます。全体のデータが10個と分かっていますので、0番目から9番目までを順に探していきます。

 実行結果は次のようになりました。ただ、配列の中に探す値がない場合にはどうなるでしょうか。この場合、iが0から一つずつ増えていき見つからないのでiが10になってforの繰り返しがおわり、何も表示されずに終わります。では、配列の中に探す値がない場合には見つからなかったと表示するプログラムを考えましょう。

 配列の中に探す値がない場合には見つからなかったと表示するプログラム。先のプログラムとの違いをよく考えてみて下さい。

演習3 宣言文で整数型の配列dataを次の様に初期値を設定し、このデータをdata[7], data[6]..., data[0]の様に逆順に表示するプログラムを作成しなさい。

 int data[8]={59,45,33,49,25,89,29,77};

演習4 宣言文で整数型の配列dataを次の様に初期値を設定し、表示例の様に偶数と奇数に分けて表示するプログラムを作成せよ。

 int data[8]={59,45,32,49,24,89,29,78};

 表示例
 奇数:59 45 49 89 29
 偶数:32 24 78

※ヒント for文を2回使う。

コンプロI C言語の部屋です。

このサイトは東京電機大学東京千住キャンパスのEJ, EK, EF科の1年次生向けコンピュータプログラミングIの授業内容やお知らせをするページです。プログラムの初歩の初歩を学ぶ人のためのページです。この資料を授業等で共有したいという方もどうぞお使いください。一緒に学習向けコンテンツを作ってくださる方、学習者向けのサンプルプログラムの提案など歓迎いたします。

0コメント

  • 1000 / 1000