200 likes | 344 Views
プログラミング演習( 1 組) 第 5 回. http://www.fit.ac.jp/~matsuki/PEA1.html. 今日の内容. 前回の課題の解説 前回の復習 scanf 関数(入力関数) 今回の課題の説明. 5 月 7 日 のタイピング結果 ( S-Class ). 第 1 位 ブラクラ 第 2 位 大隈 君 ☆ 第 3 位 空き缶 第 4 位 小川 君 第 5 位 俺、参上!. 5 月 7 日 のタイピング結果 (上昇率 TOP ). 第 1 位 RUS 第 2 位 喰人王見習い 第 3 位 魚人王 第 4 位 J.
E N D
プログラミング演習(1組)第5回 http://www.fit.ac.jp/~matsuki/PEA1.html
今日の内容 • 前回の課題の解説 • 前回の復習 • scanf関数(入力関数) • 今回の課題の説明
5月7日のタイピング結果(S-Class) 第1位 ブラクラ 第2位 大隈君 ☆ 第3位 空き缶 第4位 小川 君 第5位 俺、参上!
5月7日のタイピング結果(上昇率TOP) 第1位 RUS 第2位 喰人王見習い 第3位 魚人王 第4位 J
タイピング • 喰人王を使用して結果を記録する • ステージ:第一の店(中華) • Excelのシートにスコアを毎回記録していく • 残り時間⇒ FeedBackページで報告 • 総タイプ数 • ミスタイプ数 • 正確さ⇒ FeedBackページで報告 • 喰いっぷり ⇒ FeedBackページで報告
前回の課題 (1)三角形の面積を求めるプログラムを作れ (2)円の円周の長さ,円の面積を求めるプログラムを作れ (3)scanf関数を使ってキーボードから値を入力できるように,(1)と(2)を改造せよ.
課題1(解答例 荒牧 君) intheight; //高さ intbase; //底辺 intarea; //面積 height = 5; //高さ設定 base = 4; //底辺設定 //プログラムの処理内容を画面表示 printf("以下のような三角形の面積をもとめます\n"); printf("底辺の長さ:%d[cm]\n", base); printf("高さ:%d[cm]\n",height); //三角形の面積 area = height * base /2; //計算の結果 printf("\nこの三角形の面積は%d[cm2]です。\n\n",area); 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; } 「%d」は10進数の整数として表示
課題2(解答例 新原 君) //変数の宣言 double radius; //半径の長さ[cm] double pai; //円周率 double length; //円の円周の長さ[cm] double area; //面積[平方cm] radius = 5; //半径の長さを設定 pai = 3.14; //πの長さを設定 //円周の長さを計算 length = 2 * radius * pai; //面積を計算 area = radius * radius * pai; //結果の表示 printf("\nこの円の円周の長さは%f [cm]です\n\n",length); printf("\nこの円の面積は%f [平方cm]です\n\n",area); double型で宣言 「%f」は実数として表示
課題3(解答例) /*プログラムの処理内容を画面表示*/ printf("以下のような円の円周の長さと面積を求めます。\n"); printf("半径:"); scanf("%lf",&radius); double型の変数radiusにキーボードから値を入力させる
scanf関数(テキストp.92) • 機能:標準入力(キーボード)から値を入力させる • 引数:書式(変換指定子)と,変数 • 変換指定子: • %d : 10進整数 • %f : float型浮動小数点数 • %lf : double型浮動小数点数 • %c: 文字 • %s: 文字列 • %x: 16進数整数 • 使い方:scanf(“変換指定子”, &変数);
scanf関数 • 例: int x; float y; double z; printf(“xに入力してください”); scanf(“%d”,&x); printf(“yに入力してください”); scanf(“%f”,&y); printf(“zに入力してください”); scanf(“%lf”,&z); int型の変数 x に入力 float型の変数 y に入力 doubleの変数 z に入力
scanf関数の警告メッセージ • warning C4996:『warning C4996: 'scanf' が古い形式として宣言されました。 c:\program files\microsoft visual studio 8\vc\include\stdio.h(295) : 'scanf' の宣言を確認してください。 メッセージ: 'This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.‘』 Visual Studio 2005では、セキュリティ上の配慮から、scanf関数の使用に対して警告が出されます(大量のデータ入力がなされた場合に、メモリ破壊を招く危険性があるため)。 • 対策1: この警告については無視する。 • 対策2:ソースファイルの最上部に以下の一文を追加#define _CRT_SECURE_NO_DEPRECATE 1
課題(締切:5/18) (1)車の速さspeedと、目的地までの距離distanceを入力させて、目的地までの所要時間を以下のような表示形式で求めるプログラムを作成せよ。 車の速さ(km/h):100 距離(km) :250 所要時間は、2時間30分00秒です (2)2次方程式a x2 + b x + c = 0の解を求める プログラムを作成せよ(a,b,cは入力させよ) xの平方根を求めるプログラムを参考にせよ。
課題のヒント1 int Speed_kmph = 50; //時速[km/h] int 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 * 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
課題のヒント4 (1)2次方程式の係数a, b, cを入力させる (ただし,今回は重解や虚数解については考慮しなくてよい) (2)2次方程式の解の公式を利用して,2つの解を計算する
課題(Special) (Special) 2次方程式ax2+bx+c=0を解き,因数分解の形で表示するプログラムを作成せよ.さらに,if文を使って,重解・虚数解にも対応させよ(pp.89-96参照).なお,表示方法にも注意すること 入力: • a = 1 • b = 1 • c = -2 出力: (x - 1)(x + 2) = 0
注意事項 • ソースファイルについて • ソースファイルは添付ファイルで送る • ソースファイル以外は送らない • ソースファイルの名前は,半角のみ使用 • メールについて • 件名は,学籍番号+半角スペース+氏名 • (例)S09F2099 松木裕二 • 本文にも短いカバーレター(説明)をつける
その他 • 講義に関する質問・課題提出など: • 2009pe11y@gmail.com • Feed back page: • http://www.fit.ac.jp/~matsuki/cgi-bin/newpage11.html • メールアドレスの入力は不要です • ニックネームを決めてください(Ranking表示に使います)