プログラミング演習(2組) 第6回 http://www.fit.ac.jp/~matsuki/PEB1.html オフィス・アワーのお知らせ • オフィス・アワーを以下の要領で開講 – 日時:毎週月曜日、5時限目(16:20~) – 場所:A棟 4階 41番教室 – 内容:プログラミング関連科目 今日の内容 • 前回の課題の解説 • DEBUGについて(エラーの探し方) • 今回の課題の説明 タイピング • 喰人王を使用して結果を記録する • ステージ:第一の店(中華) • Excelのシートにスコアを毎回記録していく – 残り時間⇒ FeedBackページで報告 – 総タイプ数 – ミスタイプ数 – 正確さ⇒ FeedBackページで報告 – 喰いっぷり ⇒ FeedBackページで報告 前回の課題(締切:5/21) 【課題1】 車の速さspeedと、目的地までの距離distance を入力させて、目的地までの所要時間を以下 のような表示形式で求めるプログラムを作成 せよ。 車の速さ(km/h):100 距離(km) :250 所要時間は、2時間30分00秒です 課題1 double Speed_kmph; //時速[km/h] double Speed_mps; //秒速[m/s] //時速[km/h]を秒速[m/s]に変換 Speed_mps = Speed_kmph / 3.6; 課題1 int AllSecond; //秒単位の時間 int Hour; //時 int Minute; //分 int Second; //秒 //秒単位の経過時間を,時・分・秒に分割 Hour = AllSecond / 3600; //1時間は3600秒 Minute = ( AllSecond % 3600 ) / 60; //1分は60秒 Second = AllSecond - Hour*3600 – Minute*60; (または、Second = ( AllSecond % 3600) % 60;) int Allsecond; double speed; double distance; double time; int hour; int minute; int second; //秒単位の時間 //車の速さ //目的地までの距離 //時間 //時 //分 //秒 printf("目的地までの所要時間を求める。\n"); printf("目的地までの距離を入力\n"); scanf("%lf", &distance); //距離 printf("車の速さを入力\n"); scanf("%lf", &speed); //速さ time=distance/speed; Allsecond=time*3600; hour=distance/speed; minute=Allsecond%3600/60; second=Allsecond%3600%60; printf("目的地までの所要時間は\n"); printf("%d時間%d分%d秒", hour, minute, second); 東君の解答例 課題2 今までの知識を使って、自分で問題を設定し、その問 題を解決するプログラムを作成せよ。ただし、以下の機 能を盛り込むこと。メール本文に問題についての説明を 書くこと。 1. 2. 3. 4. 5. 6. 7. 8. int型変数の使用 double型変数の使用 +、ー、*、/を用いた演算(すべて使うこと) sqrt, sin, cos, tanのいずれかを用いた計算 printfを用いた整数の表示 printfを用いた実数の表示 scanfを用いた整数の入力 scanfを用いた実数の入力 課題2の例 • 数学 – – – – 図形(三角形、台形)の面積・辺の長さを計算 正弦定理・余弦定理・三平方の定理の利用 座標の計算(下田君) 加法定理(黒武者さん) • 物理現象 – 斜方投射(東君) – 摩擦力(松本君) – 磁界の強さとトルクの大きさ(竹中君) • 占い – 入力値に応じて占い結果を表示(平田さん) • お金の計算(小西君、柴田君) DEBUGでよくある間違い 1.「;」の忘れ 2.全角スペースが入っている 3.変数が未定義 4.「studio.h」と書いている 4.変数の値が定まっていないのに、計算に 使っている int x; int z; z = x*x; printf(“z = %d\n”,z); 例(DEBUGの仕方) int main() この中には、間違いがわざと { まちがいが入っています。 int x; int y; 分かりますか? double number; y = x*x; number = y*3 prinf(“number = %d\n”, numbre); reture 0; } 論理演算子 • &&(論理積AND) (例)条件A&&条件B すべての条件を満たす • ||(論理和OR) (例)条件A||条件B どれか一つでも条件を満たす • !(否定NOT) (例)!条件A 条件結果を否定する 論理演算(AND) if ( (a == 3) && (b == 4) ) { 文1; } aが3,bが4と等しい時に,文1が実行される 論理演算(OR) if ( (a == 3) || (b == 4) ) { 文1; } aが3またはbが4と等しい時に,文1が実行される 論理演算で間違える例 変数a,b,cがすべて同じときに、真文を実行したい if ( a == b == c ) { 文1; 文2 } 論理演算で間違える例 たとえば, a = 7; b = 4; c = 5; のとき, if ( a < b < c ) { 文1; 文2 } 次の演算結果を求めよ (1) a < b (2) b < c (3) a < b < c (1) 0 (2) 1 (3) 1 例題 • 2次方程式の判別式を使って,解の種類を判 別するプログラムを作成せよ. 二次方程式 a*x*x + b*x + c = 0の解の種類を 調べます. 係数aは? 1 係数bは? 5 係数cは? 4 この2次方程式の解は,虚数解です 判別式Dを計算 D>0 FALSE TRUE 「2つの実数解」 と表示 D<0 FALSE TRUE 「虚数解」と表示 「重解」と表示 解答例 D = b*b-4*a*c; if (D > 0) { printf(“2つの実数解です”); } else if (D < 0) { printf(“虚数解です”); } else { printf(“重解です”); } 今日の課題 課題1:三角形の3辺の長さを入力させて,その 大小関係からどのような三角形かを判定する プログラムを作れ. 一つ目の辺の長さは? 3 二つ目の辺の長さは? 5 三つ目の辺の長さは? 4 この三角形は,直角三角形です! 課題2:3つの値を入力させて,その中で最も大 きい値を表示するプログラムを作れ. 一つ目の値は? 3 二つ目の値は? 8 三つ目の値は? -1 この中で一番大きいのは,8です! 注意事項 • ソースファイルについて ソースファイルは添付ファイルで送る ソースファイル以外は送らない ソースファイルの名前は,半角のみ使用 • メールについて 件名は,学籍番号+半角スペース+氏名 (例)S09F2099 松木裕二 本文にも短いカバーレター(説明)をつける その他 • 講義に関する質問・課題提出など: [email protected] • Feed back page: http://www.fit.ac.jp/~matsuki/cgi-bin/newpage11.html メールアドレスの入力は不要です ニックネームを決めてください(Ranking表示に使います)
© Copyright 2024 ExpyDoc