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