プログラミング演習( 2 組) 第 9 回
今日の内容 前回の課題の解説 今回の課題の説明
タイピング 喰人王を使用して結果を記録する ステージ:第一の店(中華) Excel のシートにスコアを毎回記録してい く – 残り時間⇒ FeedBack ページで報告 – 総タイプ数 – ミスタイプ数 – 正確さ⇒ FeedBack ページで報告 – 喰いっぷり ⇒ FeedBack ページで報告
前回の課題 課題1 10個の値をキーボードから入力 させて,その中の最大値と平均値を求め るプログラムを作れ(余裕のある人は, 10個の乱数に対して,最大値と平均値 を求める)
前回の課題 課題1 10個の値をキーボードから入力 させて,その中の最大値と平均値を求め るプログラムを作れ(余裕のある人は, 10個の乱数に対して,最大値と平均値 を求める) 10個の値を入力してください. 1個目:9 2個目:72 3個目:20 4個目:5 : 10個目:9 最大値は,72です 平均値は,25.3です 10個の値を入力してください. 1個目:9 2個目:72 3個目:20 4個目:5 : 10個目:9 最大値は,72です 平均値は,25.3です
平均値を求める 平均値 = 合計 ÷ データ数 入力値の合計を求めれば良い
繰り返し制御( 1 から 10 までの 和) 開始 0 → sum 1→ i i <= 10 終了 sum + i → sum TRUE FALSE i + 1→ i sum に i を加え る i を 1 増や す 10 回繰 り返す
繰り返し制御( 10 個のデータの 和) 開始 0 → sum 1→ i i <= 10 終了 sum + x → sum TRUE FALSE i + 1→ i sum に x を加え る i を 1 増や す 10 回繰 り返す x を入力
解答例(平均値) int sum = 0; int i, x; double ave; for ( i = 1; i <=10; i++ ) { printf(“%d 個目のデータは? \n”,i); scanf(“%d”, &x); sum = sum + x; } ave = (double)sum / 10;
最大値を求める 5月19日出題 課題2 3つの値を入力させて,その中で最も大き い値を表示するプログラムを作れ. 一つ目の値は? 3 二つ目の値は? 8 三つ目の値は? -1 この中で一番大きいのは,8で す! 一つ目の値は? 3 二つ目の値は? 8 三つ目の値は? -1 この中で一番大きいのは,8で す!
課題1(最大値)の考え方 (1) 3つの値の大小を「お互いに」比較する a >= b かつ a >= c a a b >= a かつ b >= c b b c >= a かつ c >= b c c 最大値 条件
課題1(最大値)の考え方 (2) 3つの値を「暫定最大値」と比較する 最初の入力値だけ,特別に暫定最大値として扱 う a a b b c c max この方法を利用しよ う!
課題1(最大値)の考え方 max = a; // 暫定的に a を最大とする if(b > max) max = b; if(c > max) max = c;
課題1(最大値)の考え方 int x, i; int max; printf(“ 1個目の入力値は ”); scanf(“%d”,&max); for (i=2;i<=10;i++) { printf(“%d 個目の入力値は ”,i);scanf(“%d”,&x); if ( max < x ) max = x; }
前回の課題 課題2 6月1日のプログラミングⅠで出題した問 題 (1) (2) 加算と減算を交互に行う 減算 加算加算 加算加算 加算加算 加算加算
課題2の考え方 int k; double sum = 0.0; for (k=1; k <= ; k++) { if (k % 2 == 1) sum += (double)1/(2*k-1); else sum -= (double)1/(2*k-1); printf(“%6d π = %.16lf\n”,k,sum*4); }
時間を計ってみよう! int x; x = time(NULL); int x; x = time(NULL); time() は、 1970 年 1 月 1 日午前 0 時からの 経過秒を求める関数(命令) time の括弧の中は 「 NULL 」という文 字を入れて使う
時間を計ってみよう! x1 = time(NULL); x2 = time(NULL); int x1, x2; 処理1 x2 – x1 を表示
時間を計ってみよう! // 時間を計る方法 : time(NULL) #include main() { int t_start; t_start = time(NULL); t_end = time(NULL); t_diff = t_end – t_start; printf(“ 処理にかかった時間は %d 秒です \n”, t_diff); } 所要時間を計測したい処理 円周率を求める計算 処理を入れてみよう
タイマーを作ろう #include main() { int t_start, t_end, t_set; printf(“ セットする時間 [ 秒 ] は? ”); scanf(“%d”,&t_set); t_start = time(NULL); do { t_end = time(NULL); }while( ); printf(“\a”); printf(“%d 秒が経過しましたよ \n”, t_set); }
今日の課題 課題1:下図のようにn段の数字のピラ ミッドを表示するプログラムを while 文で 作れ nを入力してください. n=9 1 22 333 4444 55555 666666 7777777 88888888 999999999
今日の課題 課題2: do-while 文を使って,処理を行うプ ログラムを自分で考案せよ.ただし,以 下の機能を有すること. (1)四則演算または平方根,三角関数の 使用 (2) scanf 関数による入力処理があること (3) if 文を使っていること (4) do-while 文を使用すること (5)オリジナルであること タイピング成績の excel ファイルをメールいっしょに添付して送ること
注意事項 ソースファイルについて ソースファイルは添付ファイルで送る ソースファイル以外は送らない ソースファイルの名前は,半角のみ使用 メールについて 件名は,学籍番号+半角スペース+氏名 (例) S09F2099 松木裕二 本文にも短いカバーレター(説明)をつける
その他 講義に関する質問・課題提出など: Feed back page : メールアドレスの入力は不要です ニックネームを決めてください( Ranking 表示に使い ます)