プログラミング演習 ( 2 組 ) 第 7 回

28
プププププププププ2ププ7プ http://www.fit.ac.jp/~matsuki/ PEB1.html

Upload: niabi

Post on 19-Jan-2016

67 views

Category:

Documents


0 download

DESCRIPTION

プログラミング演習 ( 2 組 ) 第 7 回. http://www.fit.ac.jp/~ matsuki/PEB1.html. 今日の内容. 前回の課題の解説 DEBUG 機能の使い方 break point step 実行 watch 機能 乱数の使い方 今回の課題の説明. タイピング. 喰人王を使用して結果を記録する ステージ:第一の店(中華) Excel のシートにスコアを毎回記録していく 残り時間⇒  FeedBack ページで報告 総タイプ数 ミスタイプ数 正確さ ⇒  FeedBack ページで報告 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: プログラミング演習 ( 2 組 ) 第 7 回

プログラミング演習( 2組)第 7回

http://www.fit.ac.jp/~matsuki/PEB1.html

Page 2: プログラミング演習 ( 2 組 ) 第 7 回

今日の内容• 前回の課題の解説• DEBUG機能の使い方

– break point– step実行– watch機能

• 乱数の使い方• 今回の課題の説明

Page 3: プログラミング演習 ( 2 組 ) 第 7 回

タイピング• 喰人王を使用して結果を記録する• ステージ:第一の店(中華)• Excelのシートにスコアを毎回記録していく–残り時間⇒  FeedBackページで報告–総タイプ数–ミスタイプ数–正確さ⇒  FeedBackページで報告–喰いっぷり ⇒  FeedBackページで報告

Page 4: プログラミング演習 ( 2 組 ) 第 7 回

今日の課題課題1:三角形の3辺の長さを入力させて,その大小関係からどのような三角形かを判定するプログラムを作れ.

課題2:3つの値を入力させて,その中で最も大きい値を表示するプログラムを作れ.

一つ目の辺の長さは? 3二つ目の辺の長さは? 5三つ目の辺の長さは? 4この三角形は,直角三角形です!

一つ目の値は? 3二つ目の値は? 8三つ目の値は? -1この中で一番大きいのは,8です!

Page 5: プログラミング演習 ( 2 組 ) 第 7 回

課題1の考え方• 三角形を分類する① 三角形が作れない② 正三角形③ 二等辺三角形④ 直角三角形

Page 6: プログラミング演習 ( 2 組 ) 第 7 回

課題1の考え方三角形が作れない条件

a >= b + c

abc

bac

cba

b >= a + c c >= b + a

上記の3つの条件のいずれかであれば,三角形は作れない

Page 7: プログラミング演習 ( 2 組 ) 第 7 回

課題1の考え方• 正三角形であるための条件

a == bかつ b==c

a

bc

Page 8: プログラミング演習 ( 2 組 ) 第 7 回

課題1の考え方• 二等辺三角形であるための条件

a == bまたは b==cまたは c==b(正三角形でなければ,)

a

bc

Page 9: プログラミング演習 ( 2 組 ) 第 7 回

課題1の考え方• 直角三角形であるための条件

a*a == b*b + c*c

a

bc

b*b == a*a + c*cc*c == b*b + a*a

いずれか満たす

Page 10: プログラミング演習 ( 2 組 ) 第 7 回

課題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");}

Page 11: プログラミング演習 ( 2 組 ) 第 7 回

課題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)として計算

Page 12: プログラミング演習 ( 2 組 ) 第 7 回

課題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°

Page 13: プログラミング演習 ( 2 組 ) 第 7 回

今日の課題課題2:3つの値を入力させて,その中で最も大きい値を表示するプログラムを作れ.

一つ目の値は? 3二つ目の値は? 8三つ目の値は? -1この中で一番大きいのは,8です!

Page 14: プログラミング演習 ( 2 組 ) 第 7 回

課題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");}

Page 15: プログラミング演習 ( 2 組 ) 第 7 回

課題1(解答例 黒武者さん)• 鋭角三角形 および 鈍角三角形の判定

Page 16: プログラミング演習 ( 2 組 ) 第 7 回

課題2の考え方(1)• 3つの値の大小を「お互いに」比較する

a >= bかつ a >= c a

b >= aかつ b >= c b

c >= aかつ c >= b c

最大値条件

Page 17: プログラミング演習 ( 2 組 ) 第 7 回

課題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);}

}

Page 18: プログラミング演習 ( 2 組 ) 第 7 回

課題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);}

Page 19: プログラミング演習 ( 2 組 ) 第 7 回

課題2の考え方(2)• 3つの値を「暫定最大値」と比較する

a

b

c

max

Page 20: プログラミング演習 ( 2 組 ) 第 7 回

課題2の解答例(別方法)

max = a; //暫定的に 0を最大とする

if(b > max) max = b;if(c > max) max = c;

Page 21: プログラミング演習 ( 2 組 ) 第 7 回

乱数• 乱数とは,ランダムに出現する値• コンピュータに,ランダムに値を選んでもらうことが可能

Page 22: プログラミング演習 ( 2 組 ) 第 7 回

乱数を得るプログラム例#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;

}

Page 23: プログラミング演習 ( 2 組 ) 第 7 回

今回の課題(1)【課題1】① 演算をメニューから数値で選ばせる( switch文を使うこと)。

② 必要な数値を入力させる。③ 演算を実行し、結果を出力する

Page 24: プログラミング演習 ( 2 組 ) 第 7 回

今回の課題(1)【課題1の実行画面例1】

---- MENU ----1) 足し算2) 引き算3) かけ算4) 割り算5) 平方根--------------------実行する演算を番号で選択してください 3

かけ算を計算します。2つの値を入力してください。一つ目の値は? 8二つ目の値は? -2演算結果は,-16です。

Page 25: プログラミング演習 ( 2 組 ) 第 7 回

今回の課題(1)【課題1の実行画面例2】

---- MENU ----1) 足し算2) 引き算3) かけ算4) 割り算5) 平方根--------------------実行する演算を番号で選択してください 5

平方根を計算します。値を一つ入力してください。値は? 2演算結果は, 1.41421356です。

Page 26: プログラミング演習 ( 2 組 ) 第 7 回

今回の課題(2)【課題2】今までの知識を使って、自分で問題を設定し、その問題を解決するプログラムを作成せよ。ただし、以下の機能を盛り込むこと。メール本文に問題についての説明を書くこと。

1. 演算(四則演算、平方、三角関数など)2. 乱数を用いた処理3. printfによる表示(出力)4. scanfを用いた入力5. if文6. switch文

Page 27: プログラミング演習 ( 2 組 ) 第 7 回

注意事項• ソースファイルについて

ソースファイルは添付ファイルで送るソースファイル以外は送らないソースファイルの名前は,半角のみ使用

• メールについて件名は,学籍番号+半角スペース+氏名(例) S09F2099  松木裕二

本文にも短いカバーレター(説明)をつける

Page 28: プログラミング演習 ( 2 組 ) 第 7 回

その他• 講義に関する質問・課題提出など:

[email protected]

• Feed back page:http://www.fit.ac.jp/~matsuki/lecture.htmlメールアドレスの入力は不要ですニックネームを決めてください( Ranking表示に使います)