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