第9回(6月12日)

プログラミング演習(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表示に使います)