第10回目 [6月22日、H.16(‘04)]
PE04-10.ppt
配列(2)
本日のメニュー
1)前回の課題について
2)前回の宿題について
3)課題
今日の課題 ファイル名は en9-****.c
教科書の List 5-1~5-8 を良く復習し
てから、次の各演習を順に処理するプロ
グラムをインデンテーションや変数名等
に気を配って作成せよ。
・演習5-1、演習5-2(91頁)、
・演習5-4(93頁)、演習5-5(95頁)
提出はいつもと同様、リスト印刷とファイル転送
ファイル名の **** は学籍番号の二桁目と下3桁
例:学生番号 034987 ならば xxx-3987.c
配列へ値を代入
for ( i=0; i<5; i++)
vc[i] = i + 1;
for ( i=0; i<5; i++)
i
vc[i]
0
0
5
1
1
1
4
2
2
2
3
vc[i] = i;
3
3
2
4
vc[i] = 5-i;
4
4
1
5
printf("vc[%d]=%d\n",
i, vc[i]);
配列へ値を代入
int va[5]={15,20,30};
int vb[5];
for ( i=0; i<5; i++)
vb[i] = va[i];
vb[i] = va[4-i]; va[4-i]
va[i]
15
0
4
20
1
3
30
2
2
0
3
1
4
0
0
vb[i]
15
0 va[4]
0 va[3]
20
30 va[2]
30
20
0 va[1]
15
0 va[0]
配列内の値の交換
i<4
for ( i=0; i<=3
i<2; i++) {
int temp = vx[i];
vx[i]
= vx[4-i];
7-i
vx[4-i]
= temp;
7-i
}
temp = a[i];
a[i] = a[j];
a[j] = temp;
i
0
1
2
3
j→
7
6
5
4
7-i
vx[0]
vx[1]
i
0
1
vx[2] 2
3
vx[3]
vx[4]
vx[5]
vx[6]
vx[7]
課題の提出について
・int vc[5] → vc[0]~vc[4]までが存在する
vc[5] を使おうとしている人が多い
for ( i=5; i>0; i--) vc[i]=i;
for ( i=0; i<4; i++) {
int temp = vx[i];
vx[i] = vx[8-i];
vx[8-i] = temp;
}
・for ( i=0; i<2; i++) :途中まで
vc[i]=i+0; vc[i]=(i-1)+1 :不要
→ 内容を良く考えて記述すること!
・番号・氏名の出力が無い。問題の内容を取り違え
ている(配列の中身でなく、出力順を変えるだけ)。
前回の宿題 [提出はいつもの通り]
◎ 教科書のList5-19を参考にして、1から nまでの
間のすべての素数を求めよ。(最大10000ぐらい)
1)上限値(n)の値は初め 上限値を入力せよ:200
に入力する
200以下の素数は、
2
3 5
7 11 ・・・
2)素数は1行に10個づつ
31 37 41 43 47 ・・・
出力する
・・・
3)素数の個数を出力する
179 181 191 193 197 ・・・
4)乗除回数を出力する
素数の数は 46 個です。
ファイル名:hw9-****.c 乗除の回数: 492
• 締め切り: 6月19日(土) 午後1時(厳守)
/* 得られた素数を10個毎に改行し
出力する。個数は ptr 個
*/
for ( i=0; i<ptr; i++) {
printf("%3d ",prime[i]);
if ( i % 10 == 9 ) 10個出力
したか
printf("\n");
どうかを
}
チェック
printf("素数の個数は%d\n",
ptr);
printf("乗除の回数は%d\n",
cnt);
宿題の提出について
・出力の仕方:サンプルの様になっていない。
1行に素数を10個づつ出力していない
80カラムの出力で改行されてしまっている
出力された素数が縦にきれいに並んでいない
すべての素数がくっついて出力されている
printf("%d",prime[i]); → 23571131・・・
%4d →
2
3
5
7 11
・インデンテーションの使い方がおかしい
・乗除の回数が多い → 素数を求めるときに2での
割り算を実行している(偶数ははじめから除外して
ある)
今日の課題
次の頁に示すような、10人の学生の学籍
番号、英語・数学・国語の得点データがあ
る。これらのデータを2次元配列の初期値
として与え、以下の内容を見やすく出力す
るプログラムを作成せよ。
・各学生の番号、各科目の得点、合計点
・全員の各科目及び合計点の平均点
ファイル名は enA-****.c
提出はいつもと同様、リスト印刷とファイル転送
今
日
の
課
題
の
デ
ー
タ
学籍番号 英語 数学 国語
1023
63
71
68
1026
49
28
51
1038
80
63
85
1055
75
60
84
1076
69
79
92
1084
96
88
81
1092
63
52
67
1104
53
68
72
1126
44
23
46
1132
81
89
75
ファイル名:hwA-****.c
今回の宿題 [提出はいつもの通り]
◎ 今日の課題で、以下の出力例のように、各学生の
3科目の平均点、全員についての平均点を小数点以
下2桁まで出力せよ。(各学生の平均点は1次元配
列を利用せよ。赤い部分が今回の宿題の部分)
学籍番号 英語 数学 国語 合計点
平均点
1023
63
71
68
202
67.33
1026
49
28
51
128
42.67
1038
80
63
85
228
76.00
:
:
:
:
1132
81
89
75
245
81.67
平均点
67.3 62.1 72.1
201.5 67.17
• 締め切り: 7月26日(土) 午後1時(厳守)
ダウンロード

プログラミング演習2004