5月15日

プログラミング演習(2組)
第5回
http://www.fit.ac.jp/~matsuki/PEB1.html
今日の内容
• 前回の課題の解説
• 今日の課題
S-Class
順位 4/24
1位 松本 君
2位 シャイニングp・・・
何でもない
3位 無名
4位 真・喰人王
5位 Mat
5/1
Hello World
真・喰人王
松川 君
↑一体何者だ!
下田 君
A-Class
順位
1位
2位
3位
4位
5位
4/24
Pストーン
柊百合
金子
がっちゃん
kpvy
5/1
アージェン
衝撃の白い稲妻
柊百合
安武 君
中村 君
B-Class
順位
1位
2位
3位
4位
5位
4/24
忍者
WALLY
toshi
ふでばこ
JUN
5/1
清水 君
ガンデル
竹中 君
園田 君
江口 君
がんばったで賞: 向日葵
タイピング
• 喰人王を使用して結果を記録する
• ステージ:第一の店(中華)
• Excelのシートにスコアを毎回記録していく
– 残り時間⇒ FeedBackページで報告
– 総タイプ数
– ミスタイプ数
– 正確さ⇒ FeedBackページで報告
– 喰いっぷり ⇒ FeedBackページで報告
前回の課題(締切:5/14)
(1)車の速さspeedと、目的地までの距離
distanceを入力させて、目的地までの所要時
間を求めるプログラムを作成せよ。
(2)2次方程式a x2 + b x + c = 0の解を求める
プログラムを作成せよ(a,b,cは入力させよ)
xの平方根を求めるプログラムを参考にせよ。
課題1(解答例)
int speed;
int distance;
int time;
int型で宣言
printf("車の速さ");
scanf("%d",&speed);
printf("目的地までの距離");
scanf("%d",&distance);
入力処理
time = distance / speed;
計算処理
printf("目的地までの所要時間");
printf("%d分\n", time);
出力処理
時間の単位に注意
課題1(計算処理)
計算処理
time= distance / speed;
整数型と整数型の計算 ⇒ 整数型
問題:
distance、speedがint型のとき,
distance = 18、speed = 10ならば,
distance / speed は,いくらになるか?
答え:1
課題1(計算処理)
所要時間を実数で求めるためには…?
(1)「distance / speed」を実数型として計算
実数型と整数型の計算 ⇒ 実数型
(格上げという)
実数型と実数型の計算 ⇒ 実数型
int distance;
int speed;
double distance;
double speed;
(double)distance / speed; → distanceをdouble
型として計算する。
課題1(計算処理)
所要時間を実数で求めるためには…?
(2)所要時間を格納する変数timeを実数型として宣言
int time;
double time;
課題1(解答例:下田君)
double speed; //車の速さ[km/h]
double distance; //目的地までの距離[km]
double time;
//所要時間[h]
//プログラムの処理内容を画面表示
//車の速さ設定
printf("以下の計算で車での目的地までの所要時間を求めます\n");
printf("車の速さを入力してください-----");
scanf("%lf",&speed);
printf("車の速さ:%lf[km/h]\n",speed);
課題1(解答例:下田君)
//目的地までの距離を設定
printf("目的地までの距離を入力してください-----");
scanf("%lf",&distance);
printf("目的地までの距離:%lf[km]\n",distance);
//所要時間を計算
time = distance/speed;
//結果の表示
printf("\n到着までの所要時間は%3.2lf[h]です
\n\n",time);
課題2
2次方程式a x2 + b x + c = 0の解を求める
プログラムを作成せよ(a,b,cは入力させよ)
xの平方根を求めるプログラムを参考にせよ。
課題2の解く手順
(1)2次方程式の係数a, b, cを入力させる(入力処理)
(2)2次方程式の解の公式を利用して,2つの解を計算
する(計算処理)
(3)2つの解を表示する(出力処理)
 b  b  4ac
x1 
2a
2
 b  b  4ac
x2 
2a
2
課題2(解答例 黒武者さん)
使用する変数を宣言
int a, b, c; //入力用
double kai1, kai2, y, root; //「kai1」「kai2」は解 yはルートの中身 rootはyをルートに変換
プログラムの目的を表示
//画面表示
printf("2次方程式 ax^2 + bx + c = 0 の解を求める計算をします\n");
//aの値入力
printf("aの値を入力してください\n");
scanf("%d", &a);
//bの値入力
printf("bの値を入力してください\n");
scanf("%d", &b);
//cの値入力
printf("cの値を入力してください\n");
scanf("%d", &c);
入力処理
課題2(解答例 黒武者さん)
//ルートの中身
y = b*b - 4*a*c;
//ルート変換
root = sqrt(y);
y (判別式)の計算
sqrt(y)の計算
//解の計算
kai1 = (-b + root)/(2 * a);
kai2 = (-b - root)/(2 * a);
計算処理
解1,2を計算
//結果表示
printf("求める解は %.2lf %.2lf\n", kai1, kai2);
出力処理
解答例(惜しい!)
解の計算部分において、
x1=(-b+sqrt(b*b-4*a*c))/2*a;
x2=(-b-sqrt(b*b-4*a*c))/2*a;
問題:どこが、まずいのか?
(分子) / 2 * a
1. 分子を計算
2. 上記結果 / 2
3. 上記結果 * a
解答例(惜しい!)
解の計算部分において、
x1=(-b+sqrt(b*b-4*a*c))/2*a;
x2=(-b-sqrt(b*b-4*a*c))/2*a;
(分子) / 2 * a;
(分子) / (2 * a);
x1=(-b+sqrt(b*b-4*a*c))/( 2*a );
x2=(-b-sqrt(b*b-4*a*c))/( 2*a );
課題(締切:5/21)
【課題1】
車の速さspeedと、目的地までの距離distance
を入力させて、目的地までの所要時間を以下
のような表示形式で求めるプログラムを作成
せよ。
車の速さ(km/h):100
距離(km) :250
所要時間は、2時間30分00秒です
今回の課題
【課題2】
今までの知識を使って、自分で問題を設定し、その問題を
解決するプログラムを作成せよ。ただし、以下の機能を盛り
込むこと。メール本文に問題についての説明を書くこと。
1.
2.
3.
4.
5.
6.
7.
8.
int型変数の使用
double型変数の使用
+、ー、*、/を用いた演算(すべて使うこと)
sqrt, sin, cos, tanのいずれかを用いた計算
printfを用いた整数の表示
printfを用いた実数の表示
scanfを用いた整数の入力
scanfを用いた実数の入力
課題のヒント1
double Speed_kmph = 50; //時速[km/h]
doulbe Speed_mps;
//秒速[m/s]
//時速[km/h]を秒速[m/s]に変換
Speed_mps = Speed_kmph / 3.6;
LEVEL 1
課題のヒント2
int Hour = 2;
//時
int Minute = 45; //分
int Second = 10; //秒
int AllSecond; //秒単位に換算
//時・分・秒の値から,秒単位の経過時間に変換
AllSecond = Hour * 3600 + Minute
LEVEL 2 * 60 + Second;
課題のヒント3
int AllSecond = 7680;
int Hour;
//時
int Minute; //分
int Second; //秒
//秒単位の時間
//秒単位の経過時間を,時・分・秒に分割
Hour = AllSecond / 3600;
//1時間は3600秒
Minute = ( AllSecond
LEVEL%53600 ) / 60;
//1分は60秒
Second = AllSecond - Hour*3600LEVEL
– Minute*60;
4
平方根を求めるプログラム
三角関数
#include <stdio.h>
#include <math.h>
int main()
{
double x = 2;
double y;
y = sqrt(x);
sin(x);
printf(“
%fです”,y);
printf(“ xの平方根は
sin(x)は %fです”,y);
} printf(“ cos(x)は %fです”,cos(x));
printf(“ tan(x)は %fです”,tan(x));
}
三角関数
三角関数sin(x),cos(x),tan(x)について
• xはdouble型でなければならない.
• xはrad単位(180°= 2π [rad])
• 計算結果は,double型になる
tan(π/4)を計算するとき,
double pi = 3.141592;
double result;
result = tan(pi / 4);
注意事項
• ソースファイルについて
ソースファイルの名前は,半角のみ使用
• メールについて
件名は,学籍番号(半角)+半角スペース+氏名
(例)S09F2099 松木裕二
本文にも短いカバーレター(説明)をつける
オフィス・アワーのお知らせ
• オフィス・アワーを以下の要領で開講
– 日時:毎週月曜日、5時限目(16:20~)
– 場所:A棟7階 研究実験室11(松木研究
室)
– 内容:プログラミング関連科目
その他
• 講義に関する質問・課題提出など:
[email protected]
• Feed back page:
http://www.fit.ac.jp/~matsuki/cgi-bin/newpage11.html
メールアドレスの入力は不要です
ニックネームを決めてください(Ranking表示に使います)