プログラミング演習 ( 2 組 ) 第 7 回
DESCRIPTION
プログラミング演習 ( 2 組 ) 第 7 回. http://www.fit.ac.jp/~ matsuki/PEB1.html. 今日の内容. 前回の課題の解説 DEBUG 機能の使い方 break point step 実行 watch 機能 乱数の使い方 今回の課題の説明. タイピング. 喰人王を使用して結果を記録する ステージ:第一の店(中華) Excel のシートにスコアを毎回記録していく 残り時間⇒ FeedBack ページで報告 総タイプ数 ミスタイプ数 正確さ ⇒ FeedBack ページで報告 - PowerPoint PPT PresentationTRANSCRIPT
プログラミング演習( 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の考え方三角形が作れない条件
a >= b + c
abc
bac
cba
b >= a + c c >= b + a
上記の3つの条件のいずれかであれば,三角形は作れない
課題1の考え方• 正三角形であるための条件
a == bかつ b==c
a
bc
課題1の考え方• 二等辺三角形であるための条件
a == bまたは b==cまたは c==b(正三角形でなければ,)
a
bc
課題1の考え方• 直角三角形であるための条件
a*a == b*b + c*c
a
bc
b*b == a*a + c*cc*c == b*b + a*a
いずれか満たす
課題1(解答例 木野君)#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;}
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 = 02 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つの値を「暫定最大値」と比較する
a
b
c
max
課題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. printfによる表示(出力)4. scanfを用いた入力5. if文6. switch文
注意事項• ソースファイルについて
ソースファイルは添付ファイルで送るソースファイル以外は送らないソースファイルの名前は,半角のみ使用
• メールについて件名は,学籍番号+半角スペース+氏名(例) S09F2099 松木裕二
本文にも短いカバーレター(説明)をつける
その他• 講義に関する質問・課題提出など:
• Feed back page:http://www.fit.ac.jp/~matsuki/lecture.htmlメールアドレスの入力は不要ですニックネームを決めてください( Ranking表示に使います)