130 likes | 189 Views
第9回目 [6月19日、H . 15(‘03)]. 配列 ( 1 ). 本日のメニュー. 1)前回の課題について 2)前回の宿題について 3)配列 4)課題. PE03-09 . ppt. 前回の課題. 教科書の List 4 - 17、4 - 18、4 - 19を良く復習してから、次の各演習を順に処理するプログラムを字下げに注意して作れ。 ・演習4 - 16、演習4 - 17(80頁)、 ・演習4 - 18(81頁). 提出 はいつもと同様、 リスト印刷 と ファイル転送. ファイル名は en8- * *** .c.
E N D
第9回目 [6月19日、H.15(‘03)]第9回目 [6月19日、H.15(‘03)] 配列(1) 本日のメニュー 1)前回の課題について 2)前回の宿題について 3)配列 4)課題 PE03-09.ppt
前回の課題 教科書の List 4-17、4-18、4-19を良く復習してから、次の各演習を順に処理するプログラムを字下げに注意して作れ。 ・演習4-16、演習4-17(80頁)、 ・演習4-18(81頁) 提出はいつもと同様、リスト印刷とファイル転送 ファイル名はen8-****.c ファイル名の **** は学籍番号の二桁目と下3桁例:学生番号 024987 ならば xxx-2987.c
縦長・横長の四角形の表示 /* hen1, hen2 に値を入力する*/ if( hen1 > hen2 ) { tate=hen1; yoko=hen2; } else { tate=hen2; yoko=hen1; } for ( i=1; i<=tate; i++) { for ( j=1; j<=yoko; j++) putchar('*'); putchar('\n'); } < *************** ***************
三角形・逆三角形の表示 /*lnに段数を入力する*/ for ( i=1; i<=ln; i++ ) { for ( j=1; j<=i; j++) putchar('*'); putchar('\n'); } i=1; i>=ln; i++ i=ln; i>=1; i-- i=ln; i>=1; i-- for ( j=1; j<=ln-i; j++) putchar(' '); ********** ********** * ** *** **** **** *** ** *
ピラミッドの表示 /* dan に段の値を入力する*/ for ( i=1; i<=dan; i++) { for ( j=1; j<=dan-i; j++) putchar(''); for ( j=1; j<=2*i-1; j++) putchar('*'); putchar('\n'); } ****************
課題の提出について • ・*がいっぱい出力される。 無限に出力される • → 無限ループになっている。 • for(初期設定式;継続条件式;再設定式) で、継続条件式の書き方がおかしい • 不等号の向きが逆、式の間違え • ・入力した二つの値の大小関係を調べていない • ・縦長、横長が逆になっている → 横長にする • ・三角形の上下が逆 → 画面上側を直角にする • ・ピラミッドが右(左)側半分しか出力されない • ・セミコロン(;)、コンマ(,)、ダブルクォーテイション(")、などの記号が抜けてコンパイルエラーとなる
前回の宿題 ファイル名は hw8-****.c ◎前回の宿題の発展問題 整数 n を順に変えて、約数の和が n のちょうど2倍となるような整数を4つ見つけ出せ。 条件を満足する整数は、 6 28 ???? ???? 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月17日(火) 午後5時 • リストの提出は、オープン利用室のレポート入れ • aucopy でのファイル転送フォルダーは、[森下伊三男]-[プログラミング演習]
int n, m, sum; /* 4個の完全数を求める */ for ( n=1; n<=10000; n++) { sum = 0; for ( m=1; m<=n; m++) if( n % m == 0 ) sum += m; if ( 2*n == sum ) printf(" %d ",n); } 初期値の代入を 忘れない! 約数の合計 を計算する 約数の合計が n の2倍 かどうかを チェックする 6 28 496 8128
int n=1, m, cnt=0, sum; do {/* 別解(forを用いない) */ sum = 0; for ( m=1; m<=n; m++) if( n%m == 0 ) sum += m; if ( 2*n == sum ) { printf(" %d ",n); cnt++; } n++; } while (cnt <= 3);
宿題の提出について • ・課題の文章が悪かった → 反省します。 • ・繰り返す範囲の間違え→ インデンテーション→ 複合文{ }を適切に使う • ・宿題の提出者数が少ない。 • ・提出されたプログラムの完成度は高かった。 • ・うまくプログラムを作るには、 • → 全体の流れを、まず、言葉で紙に書いてみる • → それぞれの部分をプログラム言語に置き換える • → 繰り返し範囲、選択構造などを確認する
今日の課題 教科書の List 5-1~5-6 を良く復習してから、次の各演習を順に処理するプログラムを作成せよ。 ・演習5-1、演習5-2(91頁)、 ・演習5-4(93頁)、演習5-5(95頁) 提出はいつもと同様、リスト印刷とファイル転送 ファイル名はen9-****.c ファイル名の **** は学籍番号の二桁目と下3桁例:学生番号 024987 ならば xxx-2987.c
今日の宿題 [提出はいつもの通り] • ◎ 教科書の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月24日(火) 午後5時(厳守)
第9回終了 次回(第10回)のプログラミング入門、プログラミング演習は 6月26日です。