280 likes | 390 Views
プãƒã‚°ãƒ©ãƒŸãƒ³ã‚°æ¼”ç¿’ ( 2 組 ) 第 7 回. http://www.fit.ac.jp/~ matsuki/PEB1.html. 今日ã®å†…容. å‰å›žã®èª²é¡Œã®è§£èª¬ DEBUG 機能ã®ä½¿ã„æ–¹ break point step 実行 watch 機能 乱数ã®ä½¿ã„æ–¹ 今回ã®èª²é¡Œã®èª¬æ˜Ž. タイピング. 喰人王を使用ã—ã¦çµæžœã‚’記録ã™ã‚‹ ステージ:第一ã®åº—(ä¸è¯ï¼‰ Excel ã®ã‚·ãƒ¼ãƒˆã«ã‚¹ã‚³ã‚¢ã‚’毎回記録ã—ã¦ã„ã 残り時間⇒  FeedBack ページã§å ±å‘Š ç·ã‚¿ã‚¤ãƒ—æ•° ミスタイプ数 æ£ç¢ºã• ⇒  FeedBack ページã§å ±å‘Š
E N D
プログラミング演習(2組)第7回 http://www.fit.ac.jp/~matsuki/PEB1.html
今日の内容 • 前回の課題の解説 • DEBUG機能の使い方 • break point • step実行 • watch機能 • 乱数の使い方 • 今回の課題の説明
タイピング • 喰人王を使用して結果を記録する • ステージ:第一の店(中華) • Excelのシートにスコアを毎回記録していく • 残り時間⇒ FeedBackページで報告 • 総タイプ数 • ミスタイプ数 • 正確さ⇒ FeedBackページで報告 • 喰いっぷり ⇒ FeedBackページで報告
今日の課題 課題1:三角形の3辺の長さを入力させて,その大小関係からどのような三角形かを判定するプログラムを作れ. 課題2:3つの値を入力させて,その中で最も大きい値を表示するプログラムを作れ. 一つ目の辺の長さは? 3 二つ目の辺の長さは? 5 三つ目の辺の長さは? 4 この三角形は,直角三角形です! 一つ目の値は? 3 二つ目の値は? 8 三つ目の値は? -1 この中で一番大きいのは,8です!
課題1の考え方 • 三角形を分類する • 三角形が作れない • 正三角形 • 二等辺三角形 • 直角三角形
課題1の考え方 三角形が作れない条件 c c a b a b a b c a >= b + c b >= a + 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"); } #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(解答例 近藤君) 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
課題2の解答例(西田君) if (a >= b) { 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 ---- 足し算 引き算 かけ算 割り算 平方根 -------------------- 実行する演算を番号で選択してください3 かけ算を計算します。2つの値を入力してください。 一つ目の値は? 8 二つ目の値は? -2 演算結果は,-16です。
今回の課題(1) 【課題1の実行画面例2】 ---- MENU ---- 足し算 引き算 かけ算 割り算 平方根 -------------------- 実行する演算を番号で選択してください5 平方根を計算します。値を一つ入力してください。 値は? 2 演算結果は,1.41421356です。
今回の課題(2) 【課題2】 今までの知識を使って、自分で問題を設定し、その問題を解決するプログラムを作成せよ。ただし、以下の機能を盛り込むこと。メール本文に問題についての説明を書くこと。 • 演算(四則演算、平方、三角関数など) • 乱数を用いた処理 • printfによる表示(出力) • scanfを用いた入力 • if文 • switch文
注意事項 • ソースファイルについて • ソースファイルは添付ファイルで送る • ソースファイル以外は送らない • ソースファイルの名前は,半角のみ使用 • メールについて • 件名は,学籍番号+半角スペース+氏名 • (例)S09F2099 松木裕二 • 本文にも短いカバーレター(説明)をつける
その他 • 講義に関する質問・課題提出など: • 2009pe12x@gmail.com • Feed back page: • http://www.fit.ac.jp/~matsuki/lecture.html • メールアドレスの入力は不要です • ニックネームを決めてください(Ranking表示に使います)