第10回(6月19日)

プログラミング演習(2組)
第10回
http://www.fit.ac.jp/~matsuki/PEB1.html
今日の内容
• 前回の課題の解説
• 関数の使い方
– ピラミッド課題を関数で作ってみよう
– 二次方程式の解を求める関数を作ろう
• 今回の課題の説明
タイピング
• 喰人王を使用して結果を記録する
• ステージ:第一の店(中華)
• Excelのシートにスコアを毎回記録していく
– 残り時間⇒ FeedBackページで報告
– 総タイプ数
– ミスタイプ数
– 正確さ⇒ FeedBackページで報告
– 喰いっぷり ⇒ FeedBackページで報告
前回の課題
課題1:下図のようにn段の数字のピラミッドを
表示するプログラムをwhile文で作れ
nを入力してください.n=9
1
22
333
4444
55555
666666
7777777
88888888
課題1の方針
• 分けて考えよう
(1).nという数字をn個横に並べて表示する部分
(2).1からendまで(1)を繰り返す
課題1の方針
(1).nという数字をn個横に並べて表示する部分
int k;
int n;
for (k=1; k<=n; k++) {
printf(“%d”,n);
}
処理(n)
nによって処
理が変わる
課題1の方針
(2).1から3まで処理(n = 1から3)を繰り返す
表示結果
(3段の場合)
1
22
333
処理(1)
1セット
改行
処理(2)
1セット
改行
処理(3)
122333
改行がない
改行
1セット
課題1の方針
(2).1からendまで処理(n)を繰り返す
nの部分は、1から
endまで1ずつ変わ
ればいい
処理(n)
1セット
改行
1セットを1からendまで(end回)繰り返せばよい
課題1の方針
(2).1からendまで処理(n)を繰り返す
処理(1)
改行
処理(2)
int s;
int end;
for (s=1; s<=end;s++) {
改行
処理(s)
処理(3)
改行
改行
}
課題1の方針
(2).1からendまで処理(n)を繰り返す
int s, k;
int end;
for (s=1; s<=end;s++) {
for (k=1;
k<=s;
処理(
s) k++) {
printf(“%d”,s);
改行
}
printf(“\n”);
}
課題1の解答例
int i=1,n,j=1;
//nを入力させる
printf("nを入力してください\n");
scanf("%d",&n);
printf("\n");
//while文開始
//縦の継続
while(j<=n){
//横の継続
while(i<=j){
printf("%2.0d",j);
i = i+1;
}
printf("\n");
i = 1;
j = j+1;
}
前回の課題
課題2:do-while文を使って,処理を行うプログ
ラムを自分で考案せよ.ただし,以下の機能
を有すること.
(1)四則演算または平方根,三角関数の使用
(2)scanf関数による入力処理があること
(3)if文を使っていること
(4)do-while文を使用すること
(5)オリジナルであること
タイピング成績のexcelファイルをメールいっしょに添付して送ること
自由課題例
• 心拍数を測って,寿命を予測する(近藤君)
• 月額の返済額と金利を計算する(藤野君)
• 丁半ゲーム(黒武者さん)
タイマーを作ろう
#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( t_end – t_start < t_set );
printf(“\a”);
printf(“%d秒が経過しましたよ\n”, t_set);
}
例題
• 円の半径を入力させて,円周の長さ[m]と円の面
積[m*m]を求めるプログラムを作れ.ただし,円
周の長さと円の面積を計算する部分は関数で処
理を行うこと.
• xのn乗を計算する関数pow()
double pow(double x, int n);
• 円周の長さを計算する関数length()
double length(double r);
• 円の面積を計算する関数area()
double area(double r);
例題の解答(1/3)
#include <stdio.h>
#define PI 3.14159265358979323
//プロトタイプ宣言
double pow(double , int);
//べき乗
double length(double r); //円周の長さ[m]
double area(double r);
//円の面積[m*m]
例題の解答(2/3)
main()
{
double radius;
//円の半径[m]
//入力処理
printf("円の半径を入力してくださいradius = ");
scanf("%lf",&radius);
//結果表示
printf("円周の長さは%3.2f[m]です\n",length(radius) );
printf("円の面積は%3.2f[m*m]です\n",area(radius) );
}
例題の解答(3/3)
double length(double r)
{
return (2*PI*r);
}
double area(double r)
{
return (PI*r*r);
}
今回の課題
課題1:
3つの値を入力させて,最大値を求めるプログラ
ムを関数を使って,実現せよ.ただし,関数は
以下のような仕様に統一する.
• 関数名:getMax
• 引数:すべてdouble型とし, 変数名はa, b, cとする
• 戻り値: double型とし,引数a,b,cの中の最大値を返す
今回の課題
課題2:
三角形の3辺の長さを入力させて,余弦定理を
使って面積を求めるプログラムを作れ.ただし,
計算部分は,以下の仕様の関数を作ること.
• 関数名:getTriangle
• 引数:すべてdouble型とし, 変数名はa, b, cとする
• 戻り値: double型とし,引数a,b,cを3辺とする三角形の
面積を返す
注意事項
• ソースファイルについて
ソースファイルは添付ファイルで送る
ソースファイル以外は送らない
ソースファイルの名前は,半角のみ使用
• メールについて
件名は,学籍番号+半角スペース+氏名
(例)S09F2099 松木裕二
本文にも短いカバーレター(説明)をつける
その他
• 講義に関する質問・課題提出など:
[email protected]
• Feed back page:
http://www.fit.ac.jp/~matsuki/cgi-bin/newpage11.html
メールアドレスの入力は不要です
ニックネームを決めてください(Ranking表示に使います)