第8回 データの入力

ファーストイヤー・セミナーⅡ
第8回 データの入力
第7回のレポート課題(1)

整数を入力して絶対値を表示
入力された数値が
負なら-1をかける
第7回のレポート課題(2)

2001~2050年までのうるう年を表示
2001~2050まで繰り返す
年を4で割って余りが0なら
その年を表示する
第7回のレポート課題(3)

横縞模様を表示
i, j の2重ループ
iの値が偶数なら、
jの数だけ■を表示
第7回のレポート課題(4)

1~20の整数a, b, cで a2 + b2 = c2 となる組み合わせを表示
a, b, c で3重ループを作り、もし 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文を使うと便利
配列の初期化


配列の宣言の際、同時に配列にデータ(初期値)を入れ
ておくことができる
これを配列の初期化といい、以下のような書き方がある
int hairetsu[5] = {3,12, 9, 5, 75};
int hairetsu[ ] = {3,12, 9, 5, 75}; 配列の要素数は5になる
int hairetsu[5] = {3,12, 9}


残り2つには0が入る
配列の要素数を書かずに初期化した場合、データの個
数分だけ配列の場所が確保される
データ個数が配列の要素数より少ない場合、残りの部
分には「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]とする
多重ループを使って以下の表のような数値を入れる
12

ヒント:
i を一つ目の添え字、 j を二つ目の添え字とすると
(i + 1)*10 + (j + 1) で数値が計算できる
プログラム例
練習:配列による得点処理


配列を用いて試験の成績を処理するプログラムを作ろう
5人の得点(0~100)をキーボードから入力し、平均点を計算する
出力例
第8回のレポート

以下のプログラムを全て作成し、どちらか1つをメールで
教員まで送ってください。
(1)5人の試験結果について、キーボードから得点を入力し、
80点以上の人の番号を表示するプログラム
(2)以下の行列AとBの掛け算 A×B をおこない、結果を表
示するプログラム
1 2 3
A

4
5
6


1 5
B  5 3
8 1