プログラミング演習(2組) 第10回 http://www.fit.ac.jp/~matsuki/PEB1.html 今日の内容 • 前回の課題の解説 • 関数の使い方 – ピラミッド課題を関数で作ってみよう – 二次方程式の解を求める関数を作ろう • 今回の課題の説明 タイピング • 喰人王を使用して結果を記録する • ステージ:第一の店(中華) • Excelのシートにスコアを毎回記録していく – 残り時間⇒ FeedBackページで報告 – 総タイプ数 – ミスタイプ数 – 正確さ⇒ FeedBackページで報告 – 喰いっぷり ⇒ FeedBackページで報告 前回の課題 課題1:下図のようにn段の数字のピラミッドを 表示するプログラムをwhile文で作れ nを入力してください.n=9 1 22 333 4444 55555 666666 7777777 88888888 課題1の方針 • 分けて考えよう (1).nという数字をn個横に並べて表示する部分 (2).1からendまで(1)を繰り返す 課題1の方針 (1).nという数字をn個横に並べて表示する部分 int k; int n; for (k=1; k<=n; k++) { printf(“%d”,n); } 処理(n) nによって処 理が変わる 課題1の方針 (2).1から3まで処理(n = 1から3)を繰り返す 表示結果 (3段の場合) 1 22 333 処理(1) 1セット 改行 処理(2) 1セット 改行 処理(3) 122333 改行がない 改行 1セット 課題1の方針 (2).1からendまで処理(n)を繰り返す nの部分は、1から endまで1ずつ変わ ればいい 処理(n) 1セット 改行 1セットを1からendまで(end回)繰り返せばよい 課題1の方針 (2).1からendまで処理(n)を繰り返す 処理(1) 改行 処理(2) int s; int end; for (s=1; s<=end;s++) { 改行 処理(s) 処理(3) 改行 改行 } 課題1の方針 (2).1からendまで処理(n)を繰り返す int s, k; int end; for (s=1; s<=end;s++) { for (k=1; k<=s; 処理( s) k++) { printf(“%d”,s); 改行 } printf(“\n”); } 課題1の解答例 int i=1,n,j=1; //nを入力させる printf("nを入力してください\n"); scanf("%d",&n); printf("\n"); //while文開始 //縦の継続 while(j<=n){ //横の継続 while(i<=j){ printf("%2.0d",j); i = i+1; } printf("\n"); i = 1; j = j+1; } 前回の課題 課題2:do-while文を使って,処理を行うプログ ラムを自分で考案せよ.ただし,以下の機能 を有すること. (1)四則演算または平方根,三角関数の使用 (2)scanf関数による入力処理があること (3)if文を使っていること (4)do-while文を使用すること (5)オリジナルであること タイピング成績のexcelファイルをメールいっしょに添付して送ること 自由課題例 • 心拍数を測って,寿命を予測する(近藤君) • 月額の返済額と金利を計算する(藤野君) • 丁半ゲーム(黒武者さん) タイマーを作ろう #include <stdio.h> #include <math.h> main() { int t_start, t_end, t_set; printf(“セットする時間[秒]は?”); scanf(“%d”,&t_set); t_start = time(NULL); do { t_end = time(NULL); }while( t_end – t_start < t_set ); printf(“\a”); printf(“%d秒が経過しましたよ\n”, t_set); } 例題 • 円の半径を入力させて,円周の長さ[m]と円の面 積[m*m]を求めるプログラムを作れ.ただし,円 周の長さと円の面積を計算する部分は関数で処 理を行うこと. • xのn乗を計算する関数pow() double pow(double x, int n); • 円周の長さを計算する関数length() double length(double r); • 円の面積を計算する関数area() double area(double r); 例題の解答(1/3) #include <stdio.h> #define PI 3.14159265358979323 //プロトタイプ宣言 double pow(double , int); //べき乗 double length(double r); //円周の長さ[m] double area(double r); //円の面積[m*m] 例題の解答(2/3) main() { double radius; //円の半径[m] //入力処理 printf("円の半径を入力してくださいradius = "); scanf("%lf",&radius); //結果表示 printf("円周の長さは%3.2f[m]です\n",length(radius) ); printf("円の面積は%3.2f[m*m]です\n",area(radius) ); } 例題の解答(3/3) double length(double r) { return (2*PI*r); } double area(double r) { return (PI*r*r); } 今回の課題 課題1: 3つの値を入力させて,最大値を求めるプログラ ムを関数を使って,実現せよ.ただし,関数は 以下のような仕様に統一する. • 関数名:getMax • 引数:すべてdouble型とし, 変数名はa, b, cとする • 戻り値: double型とし,引数a,b,cの中の最大値を返す 今回の課題 課題2: 三角形の3辺の長さを入力させて,余弦定理を 使って面積を求めるプログラムを作れ.ただし, 計算部分は,以下の仕様の関数を作ること. • 関数名:getTriangle • 引数:すべてdouble型とし, 変数名はa, b, cとする • 戻り値: double型とし,引数a,b,cを3辺とする三角形の 面積を返す 注意事項 • ソースファイルについて ソースファイルは添付ファイルで送る ソースファイル以外は送らない ソースファイルの名前は,半角のみ使用 • メールについて 件名は,学籍番号+半角スペース+氏名 (例)S09F2099 松木裕二 本文にも短いカバーレター(説明)をつける その他 • 講義に関する質問・課題提出など: [email protected] • Feed back page: http://www.fit.ac.jp/~matsuki/cgi-bin/newpage11.html メールアドレスの入力は不要です ニックネームを決めてください(Ranking表示に使います)
© Copyright 2024 ExpyDoc