プログラミング演習(2組) 第7回 http://www.fit.ac.jp/~matsuki/PEB1.html 今日の内容 • 前回の課題の解説 • DEBUG機能の使い方 – break point – step実行 – watch機能 • 乱数の使い方 • 今回の課題の説明 タイピング • 喰人王を使用して結果を記録する • ステージ:第一の店(中華) • Excelのシートにスコアを毎回記録していく – 残り時間⇒ FeedBackページで報告 – 総タイプ数 – ミスタイプ数 – 正確さ⇒ FeedBackページで報告 – 喰いっぷり ⇒ FeedBackページで報告 今日の課題 課題1:三角形の3辺の長さを入力させて,その 大小関係からどのような三角形かを判定する プログラムを作れ. 一つ目の辺の長さは? 3 二つ目の辺の長さは? 5 三つ目の辺の長さは? 4 この三角形は,直角三角形です! 課題2:3つの値を入力させて,その中で最も大 きい値を表示するプログラムを作れ. 一つ目の値は? 3 二つ目の値は? 8 三つ目の値は? -1 この中で一番大きいのは,8です! 課題1の考え方 • 三角形を分類する ① ② ③ ④ 三角形が作れない 正三角形 二等辺三角形 直角三角形 課題1の考え方 三角形が作れない条件 c b a a >= b + c c a b b >= a + c a b c c >= b + a 上記の3つの条件のいずれかであれば,三角形は作れない 課題1の考え方 • 正三角形であるための条件 c b a a == bかつb==c 課題1の考え方 • 二等辺三角形であるための条件 c b a a == bまたはb==cまたはc==b (正三角形でなければ,) 課題1の考え方 • 直角三角形であるための条件 c b a a*a == b*b + c*c b*b == a*a + c*c c*c == b*b + a*a いずれか満たす 課題1(解答例 木野君) if((x+y <=z)||(y+z<=x)||(z+x<=y)) { printf("\n出来ない\n"); } else if(x==y && y==z){ printf("\n正三角形です\n"); } else if((x==y)||(y==z)||(z==x)){ printf("\n2辺辺三角形です\n"); } else if((x*x+y*y==z*z)||(y*y+z*z==x*x)||(z*z+x*x==y*y)){ printf("\n直角三角形です\n"); } else { printf("\n三角形です\n"); } 課題1(解答例 近藤君) printf("入力した辺の長さより、角形の種類を判別します。\n\n"); printf("3角形の各辺の値を入力してください。\n\n"); printf("※もしも、根号を使う場合は「0」と入力してEnterを押し\n"); printf("改行を確認した後根号内の数値を入力してください。\n\n"); printf(“A = ”); scanf(“%lf”,&A_length); if (A_length == 0) { A_root = 1; scanf("%lf",&A_length); } A_length: 辺の長さ A_root: 平方根であるかどうか A=0 2 A_lengthをsqrt(2)として計算 課題1(解答例 左山君) cosA = sqrt((b*b+c*c-a*a)/(2*b*c)); cosB = sqrt((c*c+a*a-b*b)/(2*c*a)); cosC = sqrt((a*a+b*b-c*c)/(2*a*b)); 三角形の角度を計算 if(cosA==0||cosB==0||cosC==0) { printf("この三角形は直角三角形です。\n\n"); } cosが0 ⇒ その角度が90° 今日の課題 課題2:3つの値を入力させて,その中で最も大 きい値を表示するプログラムを作れ. 一つ目の値は? 3 二つ目の値は? 8 三つ目の値は? -1 この中で一番大きいのは,8です! 課題1(解答例 松川君) if((a<b+c)&&(b<a+c)&&(c<a+b)) { if((a==b)&&(a==c)) { printf("正三角形です。\n"); } else if((a*a==b*b+c*c)||(b*b==a*a+c*c)||(c*c==a*a+b*b)) { if((a==b)||(a==c)||(b==c)) { printf("直角二等辺三角形です。\n"); } else { printf("直角三角形です。\n"); } } else if((a==b)||(a==c)||(b==c)) { printf("二等辺三角形です。\n"); } else { printf("三角形です。\n"); } } else { printf("三角形ではありません。\n"); } 課題1(解答例 黒武者さん) • 鋭角三角形 および 鈍角三角形の判定 課題2の考え方(1) • 3つの値の大小を「お互いに」比較する 条件 最大値 a >= bかつa >= c a b >= aかつb >= c b c >= aかつc >= b c if (a >= b) 課題2の解答例(西田君) { if (a >= c) { printf("1番大きな数字は%dです\n",a); } } if(b >= c) { if (b >= a) { printf("1番大きな数字は%dです\n",b); } } if(c >= a) { if (c >= b) { printf("1番大きな数字は%dです\n",c); } 課題2の解答例(西田君) if ((a >= b) && (a>=c)) { printf("1番大きな数字は%dです\n",a); } if ((b >= c)&&(b>=a)) { printf("1番大きな数字は%dです\n",b); } if ((c >= a)&&(c>=b)) { printf("1番大きな数字は%dです\n",c); } 課題2の考え方(2) • 3つの値を「暫定最大値」と比較する max a c b 課題2の解答例(別方法) max = a; //暫定的に0を最大とする if(b > max) max = b; if(c > max) max = c; 乱数 • 乱数とは,ランダムに出現する値 • コンピュータに,ランダムに値を選んでもらう ことが可能 乱数を得るプログラム例 #include <stdio.h> #include <time.h> int main() { int N = 10; //乱数の上限 int x; srand(time(NULL)); //乱数を使うための準備 // while (1) { x = rand() % N; //0からN-1までの範囲の乱数を取得 printf(“乱数は%d\n”,x); // } return 0; } 今回の課題(1) 【課題1】 ① 演算をメニューから数値で選ばせる(switch 文を使うこと)。 ② 必要な数値を入力させる。 ③ 演算を実行し、結果を出力する 今回の課題(1) 【課題1の実行画面例1】 ---- MENU ---1) 足し算 2) 引き算 3) かけ算 4) 割り算 5) 平方根 -------------------実行する演算を番号で選択してください 3 かけ算を計算します。2つの値を入力してください。 一つ目の値は? 8 二つ目の値は? -2 演算結果は,-16です。 今回の課題(1) 【課題1の実行画面例2】 ---- MENU ---1) 足し算 2) 引き算 3) かけ算 4) 割り算 5) 平方根 -------------------実行する演算を番号で選択してください 5 平方根を計算します。値を一つ入力してください。 値は? 2 演算結果は,1.41421356です。 今回の課題(2) 【課題2】 今までの知識を使って、自分で問題を設定し、そ の問題を解決するプログラムを作成せよ。ただし、 以下の機能を盛り込むこと。メール本文に問題に ついての説明を書くこと。 1. 2. 3. 4. 5. 6. 演算(四則演算、平方、三角関数など) 乱数を用いた処理 printfによる表示(出力) scanfを用いた入力 if文 switch文 注意事項 • ソースファイルについて ソースファイルは添付ファイルで送る ソースファイル以外は送らない ソースファイルの名前は,半角のみ使用 • メールについて 件名は,学籍番号+半角スペース+氏名 (例)S09F2099 松木裕二 本文にも短いカバーレター(説明)をつける その他 • 講義に関する質問・課題提出など: [email protected] • Feed back page: http://www.fit.ac.jp/~matsuki/lecture.html メールアドレスの入力は不要です ニックネームを決めてください(Ranking表示に使います)
© Copyright 2024 ExpyDoc