第7回目 [6月5日、H.15(‘03)] 繰り返し構造(for文)と 増(減)・複合代入演算子 本日のメニュー 1)前回の課題について 2)前回の宿題について 3)for文 と 増減・複合代入演算子 4)課題 PE03-07.ppt 前回の課題 教科書の各演習を順に処理するプログラム を作成せよ。 (1)演習3-9、演習3-10(53頁)、 演習3-11、演習3-12(57頁) (2)List4-2、4-3(62,63頁)、を理解して、 演習4-1、演習4-2(65頁)、List4-7(6 8頁)を理解して、演習4-6(96頁) ファイル名は en6-****.c ファイル名の **** は学籍番号の二桁目と下3桁 例:学生番号 024987 ならば xxx-2987.c int a, b, c; 番号・氏名 puts("024222 朝日太郎"); の出力 puts("三つの整数を入力してください"); 今回は忘れ printf("整数A:"); scanf("%d", &a); た人が多い printf("整数B:"); scanf("%d",減点 &b); printf("整数C:"); scanf("%d", &c); if ( a==b && b==c ) puts("三つの値は等しいです。"); else if ( a==b || b==c || c==a ) puts("二つの値が等しいです。"); else puts("三つの値は異なります。"); 課題:演習3-9について ・3つの値が等しいかどうかをチェックする場合 (いずれの場合もコンパイルエラーにはならな い) → if( a == b == c ) とは書けない if ( a==b && b==c ) と書く必要がある → if ( a==b && b==c && c==a ) 冗長 式 b=c の値 → if ( a = b = c ) とは書けない a,b,cが共に 3 の時 を a に代入 a == b == c の評価 a = b = c の評価 1(true) == c p.177 = は右結合 c の値をb に代入 0(false == は左結合 式の値にもなる 課題:演習3-10について ・2数 a, b の差が 11 以上か 10 以下かを判定 → a-b が –11 以下 または 11以上 if(( a-b <= -11 ) || ( a-b >= 11 )) → a-b が –10 以上 かつ 10以下 if(( a-b >= -10 ) && ( a-b <= 10 )) → if ( a > b ) d = a-b; d = (a>b) ? a-b: b-a; else d = b-a; if ( d >= 11 ) ・・・ -11 11 → d = a – b; -10 0 10 if ( d < 0 ) d = -d; if ( d >= 11 ) ・・・ 前回の宿題 ファイル名:hw6-****.{c, exe} 正の整数を入力していき、 data ? 30 0(ゼロ) 又は負の整数が data ? 54 入力されるまでに入力さ data ? 16 data ? –1 れた正の整数について、 最大値は 54 です。 次の値を順に出力せよ 最小値は 16 です。 1) 最大値 2) 最小値 個数は 3 個です。 平均値は 33.33 です。 3) 個数 4) 平均値 • 締め切り: 6月3日(火) 午後5時 • リストの提出は、オープン利用室のレポート入れ • aucopy でのファイル転送フォルダーは、 [森下伊三男]-[プログラミング演習] int main(void) { int a, m, max, min, cnt cnt;= 0 ; double ave, sum; sum = 0.0; max,minに cnt = 0; sum = 0.0; 初期値を与える printf("data ?"); scanf("%d",&a); if ( a > 0 ) { max = a; min = a; } while (a > 0) { if ( a < min ) min = a; else if ( a > max ) max = a; sum = sum + a; cnt = cnt + 1; printf("data ?"); scanf("%d",&a); } if (cnt != 0) { ave = sum/cnt; printf("最大値は %d です。\n",max); printf("最小値は %d です。\n",min); printf("個数は %d 個です。\n",cnt); printf("平均値は %5.2f です。\n", ave); } else printf("入力データ数はゼロです。\n"); return(0); } 宿題について ・一番先に、0又は負の値が入力された場合に対応 していない。 → 実行時エラーとなるものが多い (ゼロでの割り算) ・最後に入力する0又は負の値も入力個数や合計 の計算に加えている。 ・入力した値の符号判断を複数の場所で行っている → 論理に無駄が有る ・平均を求める式の場所 → 繰り返しの外でよい ・max, min への初期値の与え方、与え忘れ → 最小値がいつもゼロ、システムに依存する ・宿題提出者数が少ない 今回の課題 教科書の各演習を順に処理するプログラ ムを作成せよ。 ・演習4-3(65頁)、 ・演習4-9、演習4-10(71頁)、 ・演習4-13、演習4-14(77頁) 提出はいつもと同様、リスト印刷とファイル転送 ファイル名は en7-****.c ファイル名の **** は学籍番号の二桁目と下3桁 例:学生番号 024987 ならば xxx-2987.c 今日の宿題 ファイル名は hw7-****.c ◎ n を入力し、n以下のnを入力? 30 次の値を順に出力せよ。30 以下の 偶数の和は 240 です。 1)偶数の和 3の倍数の和は 165 です。 約数は、 2) 3の倍数の和 1 2 3 5 6 10 15 30 3) すべての約数の値約数の個数は 8 個です。 4) 約数の個数と合計約数の和は 72 です。 • 締め切り: 6月10日(火) 午後5時 • リストの提出は、オープン利用室のレポート入れ • aucopy でのファイル転送フォルダーは、 [森下伊三男]-[プログラミング演習] 第7回終了 次回(第8回)の プログラミング入門、 プログラミング演習は 6月12日です。
© Copyright 2024 ExpyDoc