ファーストイヤー・セミナーⅡ 第8回 データの入力
第7回のレポート課題(1) 整数を入力して絶対値を表示 入力された数値が 負なら-1をかける
第7回のレポート課題(2) 2001~2050年までのうるう年を表示 2001~2050まで繰り返す 年を4で割って余りが0なら その年を表示する
第7回のレポート課題(3) 横縞模様を表示 i, j の2重ループ iの値が偶数なら、 10個の■を表示
第7回のレポート課題(4) 1~20の整数a, b, cで a2 + b2 = c2 となる組み合わせを表示
データの入力 キーボード(標準入力)からのデータ入力には、scanf関数を用いる scanf関数の書式は「scanf(“書式”,&読み込む変数名)」となる 例)整数値をxという変数に読み込む (=キーボードからxの値を入力する) scanf (“%d”, &x);
復習 キーボードから整数値を3つ入力し、その和を計算して表示するプログラムを作ってみよう 作り方は色々あるので試してみましょう scanf関数の入力値を3つにする scanf関数を3回書く for文を用いてscanf関数を3回実行する
例1:scanf関数に3つの引数を使う 注意:変数名の前の「&」を忘れないように
例2:scanf関数を3回書く
例3:for文を用いる
配列(1) 先ほどの例では入力値が3つだったため、 a, b, c という変数を用いた 仮に「100個の数値を入力せよ」となった場合、変数の名前だけでも大変になり、また紛らわしい(入力ミスやプログラムミスの誘発) 「配列」を用いると、同じ型の多数のデータを効率よく宣言、使用することができる
配列(2) 配列の宣言は以下のような形式になる 変数の型:通常の宣言と同じで、整数、実数などの形式 配列名:変数名に相当するもの 要素数:同じ配列名を持つデータの個数 変数の型 配列名[要素数]; (一次元配列) 例: int a[10]; ←整数型の「a」という配列、要素数は10個
配列の例(1) 配列を用いて5つのデータの合計を求めるプログラム 配列xの宣言(要素数5) 配列へのデータの代入 ※配列の番号は「0」から 始まることに注意
配列のイメージ x [5] の場合、以下のように5つのデータを格納する場所が確保される 添え字([ ]の中の文字)は「0」から始まることに注意
練習 5個の要素を持つ配列 hairetsu[5] を宣言し、好きな整数値を代入してみよう また、配列のデータを順に出力するプログラムを作成してみよう 例:配列に順に3、12、9、5、75と代入しておいて出力 <出力イメージ>
プログラム例 出力にfor文を使うと便利
配列の初期化 配列の宣言の際、同時に配列にデータ(初期値)を入れておくことができる これを配列の初期化といい、以下のような書き方がある 配列の要素数を書かずに初期化した場合、データの個数分だけ配列の場所が確保される データ個数が配列の要素数より少ない場合、残りの部分には「0」が入る int hairetsu[5] = {3,12, 9, 5, 75}; int hairetsu[ ] = {3,12, 9, 5, 75}; int hairetsu[5] = {3,12, 9} 配列の要素数は5になる 残り2つには0が入る
配列の初期化(2) 先ほどの初期化の方法だと、以下のようなデータが入る int hairetsu[5] = {3,12, 9, 5, 75}; int hairetsu[ ] = {3,12, 9, 5, 75}; int hairetsu[5] = {3,12, 9}
多次元配列 先ほどまでの配列は添え字が1つの「1次元配列」 添え字を増やして2次元配列、3次元配列などもできる 2次元配列の宣言例 int x[3][2]; イメージとしては右の ような表を考えるとよい
多次元配列の初期化 2次元配列の初期化には以下のような方式がある int x[3][2] = {{1, 2}, {3, 4}, {5, 6}}; int x[3][2] = {1, 2, 3, 4, 5, 6}; ※添え字ごとに{}で区切る 添え字はなくてもよい int x[3][2] = {1, 2, 0}; ※ 要素数が足りない場合は0が入る
練習:for文と2次元配列 for文を用いて2次元配列に数値を代入・表示するプログラム 配列 x の大きさは x[3][2]とする 多重ループを使って以下の表のような数値を入れる ヒント: i を一つ目の添え字、 j を二つ目の添え字とすると (i + 1)*10 + (j + 1) で数値が計算できる
プログラム例
練習:配列による得点処理 配列を用いて試験の成績を処理するプログラムを作ろう 5人の得点(0~100)をキーボードから入力し、平均点を計算する 出力例
第8回のレポート 以下のプログラムを全て作成し、どちらか1つをメールで教員まで送ってください。 宛先: 宛先: (1)5人の試験結果について、キーボードから得点を入力し、80点以上の人の番号を表示するプログラム (2)以下の行列AとBの掛け算 A×B をおこない、結果を表示するプログラム