プログラミング演習2003

第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 に段数を入力する*/
i=1; i<=ln;
i>=ln;
i++ ) {
i>=1; i-for ( i=ln;
for ( j=1; j<=ln-i; j++)
putchar(' ');
for ( j=1; j<=i; j++)
putchar('*');
putchar('\n');
}*
****
* ****
**
***
****
***
**
*
**
***
****
***
**
*
ピラミッドの表示
/* 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 )
n の2倍
printf(" %d ",n); かどうかを
チェックする
}
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++;
宿題の提出について
・課題の文章が悪かった → 反省します。
・繰り返す範囲の間違え
→ インデンテーション
→ 複合文 {
} を適切に使う
・宿題の提出者数が少ない。
・提出されたプログラムの完成度は高かった。
・うまくプログラムを作るには、
→ 全体の流れを、まず、言葉で紙に書いてみる
→ それぞれの部分をプログラム言語に置き換える
→ 繰り返し範囲、選択構造などを確認する
今日の課題
教科書の 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ぐら
い)
上限値を入力せよ:200
1)上限値(n)の値は初め 200以下の素数は、
に入力する
2
3 5
7 11 ・・・
2)素数は1行に10個づつ 31 37 41 43 47 ・・・
・・・
出力する
179 181 191 193 197 ・・・
3)素数の個数を出力する
素数の数は 46 個です。
4)乗除回数を出力する
ファイル名:hw9-****.c 乗除の回数: 492
• 締め切り: 6月24日(火) 午後5時(厳守)
第9回終了
次回(第10回)の
プログラミング入門、
プログラミング演習は
6月26日です。