関数(1) 第11回 [6月29日、H.16(‘04)] 今日のメニュー 1 前回の課題 2 前回の宿題 3 いろいろな関数の演習 4 課題 プログラミング演習('04) 2017/3/4 第11回 [6月29日、H.16(‘04)] 関数(1) 今日のメニュー 1 前回の課題 2 前回の宿題 3 いろいろな関数の演習 4 課題 5 宿題 PE04-11.ppt PE04-11.ppt
プログラミング演習('04) 2017/3/4 前回の課題 次の頁に示すような、10人の学生の学籍番号、英語・数学・国語の得点データがある。これらのデータを2次元配列の初期値として与え、以下の内容を見やすく出力するプログラムを作成せよ。 ・各学生の番号、各科目の得点、合計点 ・全員の各科目及び合計点の平均点 ファイル名は enA-****.c 提出はいつもと同様、リスト印刷とファイル転送 PE04-11.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-11.ppt
int a[11][5] = { { 1023, 63, 71, 68, 0}, { 1026, 49, 28, 51, 0}, { 1038, 80, 63, 85, 0}, { 1055, 75, 60, 84, 0}, { 1076, 69, 79, 92, 0}, { 1084, 96, 88, 81, 0}, { 1092, 63, 52, 67, 0}, { 1104, 53, 68, 72, 0}, { 1126, 44, 23, 46, 0}, { 1132, 81, 89, 75, 0}, { 0, 0, 0, 0, 0} }; double av[10]={0.0}, kav[6]={0.0}; int i, j; ,を忘れない ;を忘れない
//各自の合計得点と平均点を計算する for( i=0; i<10; i++) { a[i][4]=a[i][1]+a[i][2]+a[i][3]; av[i]=a[i][4]/3.0; } /* 各科目と合計の総和と平均 */ for ( j=1; j<=4; j++) { for ( i=0; i<=9; i++) a[10][j] += a[i][j]; kav[j] = a[10][j]/10.0; kav[5] = kav[4]/3.0; double型av[i] a [0][1][2][3][4] [0] [1] [2] [8] [9] [10] : 全ての平均 番号 英 語総和 数学総和 国語総和 合計総和 kav[0][1][2][3][4][5]
: printf( " 番号 英語 数学 国語 合計点 平均点\n"); for( i=0; i<10; i++) { for ( j=0; j<=4; j++) printf("%6d",a[i][j]); printf("%9.2f\n",av[i]); } /*各科目と合計の平均点出力*/ printf("平均点 "); for ( j=1; j<=4; j++) printf("%6.1f", kav[j]); printf("%7.2f\n",kav[5]); double型av[i] a [0][1][2][3][4] [0] [1] [2] [8] [9] [10] : 全ての平均 番号 英語平均 数学平均 国語平均 合計平均 kav[0][1][2][3][4][5]
課題・宿題の提出について ・配列の添字のミスが大変多い! int a[10][4] → a[0][0]~a[9][3]まで → a[10][j] a[i][4] を使おうとしている ・配列の初期化をしていない → printf( ) でキーボードから入力している ・配列の内容の出力は大体できていた。 ・平均点の為の double型の配列について → 1次元配列 av[5] をわざわざ2次元配列で av[5][1] や av[1][5] としている。 → 要素の数が1なのに、存在しないav[i][1]を利用しようとしている。 正しくは av[i][0]
課題・宿題の提出について .平均点を小数点以下まで表示していない ・各科目の平均点を求めるとき、配列kav[6]を使わずに、a[10][j](jは1~4)に合計を入れておき、出力するとき10.0で割っても良い。 for ( j=1; j<=4; j++) printf("%6.1f", a[10][j]/10.0); ・式の中に定数を書く場合、整数型か浮動小数点型を明白にする。 nが整数型なら、 n/3は整数型、n/3.0は浮動小数点型、 aが浮動小数点型なら、a/3は3を3.0に変換し、 a/3.0 と見なされる。 ・学籍番号・氏名の出力忘れが多くなった。
今日の課題 (1)List6-1を参考に演習6ー1(118頁) (2)List6-2を参考に演習6ー2(118頁) プログラミング演習('04) 2017/3/4 今日の課題 (1)List6-1を参考に演習6ー1(118頁) (2)List6-2を参考に演習6ー2(118頁) (3)List6-3を参考に演習6ー3(119頁) List6-6を参考に演習6ー4(121頁) (4)List6-7,8を参考に演習6ー5(123頁) (5)演習6ー6(125頁) ファイル名は enB-****.c 提出はいつもと同様、リスト印刷とファイル転送 PE04-11.ppt
演習6-1の関数の中身を記述 演習6-2の関数の中身を記述 演習6-3の関数の中身を記述 演習6-4の関数の中身を記述 #include <stdio.h> int minof( int x, int y) { } int min3( int x, int y, int z) { } int cube( int x) { } int pow4( int x) { } 演習6-1の関数の中身を記述 演習6-2の関数の中身を記述 演習6-3の関数の中身を記述 演習6-4の関数の中身を記述
演習6-5の関数の中身を記述 演習6-6の関数の中身を記述 void alert( int no) { } void hello( void ) { } int main(void) { int na, nb, nc; /*演習6-1,6-2の場合*/ /*整数 na, nb, nc を入力する*/ printf("小さい方の値は %d です。\n", minof( na, nb) ); printf("3数中の最小値は %d です。\n", min3( na, nb, nc) ); ・・・・・・ 演習6-5の関数の中身を記述 演習6-6の関数の中身を記述
今回の宿題 (1)教科書の114頁~129頁を良く読んで復習する。 (2)教科書の120頁~145頁を良く読んで予習する。 プログラミング演習('04) 2017/3/4 今回の宿題 (1)教科書の114頁~129頁を良く読んで復習する。 (2)教科書の120頁~145頁を良く読んで予習する。 (3)今日の課題が未完成の場合、完成して提出する。 ファイル名:hwB-****.c 締め切り: 7月3日(土) 午後1時(厳守) PE04-11.ppt