290 likes | 381 Views
プログラミング演習( 2 組) 第 5 回. http://www.fit.ac.jp/~matsuki/PEB1.html. 今日の内容. 前回の課題の解説 今日の課題. S-Class. A-Class. B-Class. がんばった で 賞: 向日葵. タイピング. 喰人王を使用して結果を記録する ステージ:第一の店(中華) Excel のシートにスコアを毎回記録していく 残り時間⇒ FeedBack ページで報告 総タイプ数 ミスタイプ数 正確さ ⇒ FeedBack ページで報告 喰いっぷり ⇒ FeedBack ページで報告.
E N D
プログラミング演習(2組)第5回 http://www.fit.ac.jp/~matsuki/PEB1.html
今日の内容 • 前回の課題の解説 • 今日の課題
B-Class がんばったで賞: 向日葵
タイピング • 喰人王を使用して結果を記録する • ステージ:第一の店(中華) • 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; printf("車の速さ"); scanf("%d",&speed); printf("目的地までの距離"); scanf("%d",&distance); time = distance / speed; printf("目的地までの所要時間"); printf("%d分\n", time); int型で宣言 #include<stdio.h> int main() { //変数の宣言 int height=50; //縦の長さ[cm] int base=30; //底辺の長さ[cm] int area; //面積[cm^2] //プログラムの処理内容を画面表示 printf("以下のような三角形の面積を求めます\n"); printf("縦の長さ:%d[cm]\n",height); printf("横の長さ:%d[cm]\n",base); //面積の長さを計算 area=base*height/2; //結果の表示 printf("\nこの三角形の面積は%d[cm^2]です\n\n",area); return 0; } 入力処理 計算処理 出力処理 時間の単位に注意
課題1(計算処理) 計算処理 time= distance / speed; 整数型と整数型の計算 ⇒ 整数型 問題: distance、speedがint型のとき, distance = 18、speed = 10ならば, distance / speedは,いくらになるか? 答え:1
課題1(計算処理) 所要時間を実数で求めるためには…? (1)「distance / speed」を実数型として計算 実数型と整数型の計算 ⇒ 実数型 (格上げという) 実数型と実数型の計算 ⇒ 実数型 intdistance; int speed; doubledistance; 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つの解を表示する(出力処理)
課題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); //解の計算 kai1 = (-b + root)/(2 * a); kai2 = (-b - root)/(2 * a); //結果表示 printf("求める解は %.2lf %.2lf\n", kai1, kai2); y (判別式)の計算 sqrt(y)の計算 計算処理 解1,2を計算 出力処理
解答例(惜しい!) 解の計算部分において、 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; (分子) / 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】 今までの知識を使って、自分で問題を設定し、その問題を解決するプログラムを作成せよ。ただし、以下の機能を盛り込むこと。メール本文に問題についての説明を書くこと。 • int型変数の使用 • double型変数の使用 • +、ー、*、/を用いた演算(すべて使うこと) • sqrt, sin, cos, tanのいずれかを用いた計算 • printfを用いた整数の表示 • printfを用いた実数の表示 • scanfを用いた整数の入力 • scanfを用いた実数の入力
課題のヒント1 double Speed_kmph = 50; //時速[km/h] doulbeSpeed_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 * 60 + Second; LEVEL 2
課題のヒント3 int AllSecond = 7680; //秒単位の時間 int Hour; //時 int Minute; //分 int Second; //秒 //秒単位の経過時間を,時・分・秒に分割 Hour= AllSecond / 3600; //1時間は3600秒 Minute = ( AllSecond % 3600 ) / 60; //1分は60秒 Second = AllSecond - Hour*3600 – Minute*60; LEVEL 5 LEVEL 4
平方根を求めるプログラム 三角関数 #include <stdio.h> #include <math.h> int main() { double x = 2; double y; y = sqrt(x); printf(“ xの平方根は %fです”,y); } y = sin(x); printf(“ 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(松木研究室) • 内容:プログラミング関連科目
その他 • 講義に関する質問・課題提出など: • 2009pe12x@gmail.com • Feed back page: • http://www.fit.ac.jp/~matsuki/cgi-bin/newpage11.html • メールアドレスの入力は不要です • ニックネームを決めてください(Ranking表示に使います)