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