多重ループ 繰り返し構造:補足事項 第8回目 [6月8日、H.16(‘04)] 本日のメニュー 1)前回の課題について プログラミング演習('04) 2017/3/13 第8回目 [6月8日、H.16(‘04)] 多重ループ 繰り返し構造:補足事項 本日のメニュー 1)前回の課題について 2)前回の宿題について 3)多重ループ、補足事項 4)課題 PE04-08.ppt PE04-08.ppt
前回の課題 教科書の各演習を順に処理するプログラムを作成せよ。 ・演習4-3(65頁)、 ・演習4-9、演習4-10(71頁)、 プログラミング演習('04) 2017/3/13 前回の課題 教科書の各演習を順に処理するプログラムを作成せよ。 ・演習4-3(65頁)、 ・演習4-9、演習4-10(71頁)、 ・演習4-13、演習4-14(77頁) 提出はいつもと同様、リスト印刷とファイル転送 ファイル名は en7-****.c ファイル名の **** は学籍番号の二桁目と下3桁 例:学生番号 034987 ならば xxx-3987.c PE04-08.ppt
printf("二つの整数を入力せよ:"); scanf("%d %d", &a, &b); /* 演習4-3 */ printf("二つの整数を入力せよ:"); scanf("%d %d", &a, &b); if ( a > b ) { start = b; last = a; } else { start = a; last = b; } sum = 0; for ( m=start; m<=last; m++) sum += m; printf("%d以上%d以下の全整数の和は" " %dです。\n",start,last,sum); sum の初期値を忘れない!
演習4-10 の場合は、 i *= 2; i = i*2; /* 演習4-9(10) */ 初期値を忘れない事 /* 演習4-9(10) */ printf("整数を入力せよ:"); scanf("%d", &n); i = 2; while ( i <= n ) { printf("%d ", i); i += 2; } printf("\n"); /* 演習4-13 */ for ( i = 1; i <= n; i++ ) printf("%d", i % 10); putchar('\n'); 初期値を忘れない事 スペースがあると 出力が見やすくなる 演習4-10 の場合は、 i *= 2; i = i*2; 1の位のみ 一桁だけ表示
/*演習4-9(10) forの場合 */ for ( i=2; i<=n; i+=2 ) printf("%d ",i); /*演習4-10(9) doの場合 */ i = 2; if ( i <= n ) do { printf("%d ",i); i *= 2; } while ( i <= n ); 初期値を忘れない! 演習4-9 の場合は、 i += 2; i = i+2;
/* 演習4-14 */ printf("何cmから:");scanf("%d",&lw); printf("何cmまで:");scanf("%d",&up); printf("何cmごと:");scanf("%d",&st); for ( h=lw; h<=up; h+=st) { wt = ( h – 100.0 ) * 0.9; printf("%dcm %.2fkg\n", h, wt); } h = lw; while ( h <= up ) { wt = ( h – 100.0 ) * 0.9; printf("%dcm %.2fkg\n", h, wt); h += st; }
課題の提出について ◎for(i=2; i<a; i+=2) printf(・・・ for(i=2; i<a; i*=2) printf(・・・ で、a に 16 を入力すると 2・・・ と出力され、最後に 16 が出力されない。→i<=a ◎変数の値を常にトレースしてみよう。 sum = 0; while(min<=max) { sum = sum + min; min=min+1; } printf("%d以上%d以下の・・",min,max・・); → min の値が変化していくことに注意 ◎出力のされ方に注意しよう。適所に改行を入れよう。 ・出力された数値がすべてくっついてしまう。 printf("%d",i); → printf("%d ",i);
前回の宿題 ファイル名は hw7-****.c ◎ n を入力し、n以下の 次の値を順に出力せよ。 1)偶数の和 2) 3の倍数の和 プログラミング演習('04) 2017/3/13 前回の宿題 ファイル名は hw7-****.c ◎ n を入力し、n以下の 次の値を順に出力せよ。 1)偶数の和 2) 3の倍数の和 3) 全ての約数の値 4) 約数の個数と合計 nを入力? 30 30 以下の 偶数の和は 240 です。 3の倍数の和は 165 です。 約数は、 1 2 3 5 6 10 15 30 約数の個数は 8 個です。 約数の和は 72 です。 締め切り: 6月5日(土) 午後1時 リストの提出は、オープン利用室のレポート入れ aucopy でのファイル転送フォルダーは、 [森下伊三男]-[プログラミング演習] PE04-08.ppt
{int n, m, sum, cnt; puts("123456 朝日太郎"); printf("整数 n を入れよ=>"); scanf("%d",&n); printf("%d 以下の\n",n); sum = 0; for ( m=2; m<=n; m=m+2) sum=sum+m; printf("偶数の和は %d です。\n",sum); for ( m=1; m<=n; m++) if ( m % 3 == 0 ) sum=sum+m; printf("3の倍数の和は %d です。\n", sum); 初期値の代入 を忘れない! 偶数の値をm に再設定 m+2 ではダメ m+=2 は良い sum += m; 初期値の代入を忘れない!
printf("約数は、\n"); cnt = 0; sum = 0; for ( m=1; m<=n; m++) if ( n % m == 0 ) { printf(" %d, ",m); cnt = cnt + 1; sum = sum + m; } printf("\n約数の個数は %d です。\n", cnt); printf("約数の和は %d です。\n", sum); } 初期値の設定を忘れない! 約数をその都度 出力する 約数の数を数える 約数の合計を計算
宿題の提出について ◎if( i%n ) と if( i%n==0 ) の違い → n が i の約数の時 i%n はゼロ(False), i%n==0 は1(True) ◎変数名の付け方:O(オー)と0(ゼロ)は間違えやすいので避ける。内容が分かりやすい変数名を。 ◎偶数、3の倍数の和 ・for(i=3; i<=n; i+=3) sum3 += i; ・for(i=1; i<=n; i++) { if ( i%2 == 0 ) sum2 += i; if ( i%3 == 0 ) sum3 += i; } ◎リストは必ずA4用紙で提出。感想質問等記入可
プログラミング演習('04) 2017/3/13 今回の課題 ファイル名は en8-****.c 教科書の List 4-17、4-18、4-19を良く復習してから、次の各演習を順に処理するプログラムを字下げに注意して作れ。スタイルも評価対象とする。 ・演習4-16、演習4-17(80頁)、 ・演習4-18(81頁) 提出はいつもと同様、リスト印刷とファイル転送 ファイル名の **** は学籍番号の二桁目と下3桁 例:学生番号 034987 ならば xxx-3987.c PE04-08.ppt
今回の宿題 ファイル名は hw8-****.c ◎前回の宿題の発展問題 プログラミング演習('04) ファイル名は hw8-****.c 2017/3/13 今回の宿題 条件を満足する整数は、 6 28 ???? ???? ◎前回の宿題の発展問題 整数 n を順に変えて、約数の和が n のちょうど2倍となるような整数を4つ見つけ出せ。 6の約数は 1 2 3 6 であるから、 1+2+3+6 = 12 → 2x6 28の約数は 1 2 4 7 14 28 であり、 1+2+4+7+14+28 = 56 → 2x28 締め切り: 6月12日(土) 午後1時 リストの提出は、オープン利用室のレポート入れ aucopy でのファイル転送フォルダーは、 [森下伊三男]-[プログラミング演習] PE04-08.ppt