第7回(5月26日)

プログラミング演習(1組)
第7回
http://www.fit.ac.jp/~matsuki/PEA1.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(a*a+b*b==c*c || b*b+c*c==a*a || c*c+a*a==b*b) {
printf("この三角形は、直角三角形です。\n");
} else if (a==b && b==c && c==a) {
printf("この三角形は、正三角形です。\n");
} else if (a==b || b==c ||c==a) {
printf("この三角形は、二等辺三角形です。\n");
} else if (a+b<=c || b+c<=a || c+a<=b) {
printf("三角形は、できません。\n");
} else {
printf(“これは普通の三角形です。\n");
}
今日の課題
課題2:3つの値を入力させて,その中で最も大
きい値を表示するプログラムを作れ.
一つ目の値は? 3
二つ目の値は? 8
三つ目の値は? -1
この中で一番大きいのは,8です!
課題2の考え方(1)
• 3つの値の大小を「お互いに」比較する
条件
最大値
a >= bかつa >= c
a
b >= aかつb >= c
b
c >= aかつc >= b
c
課題2の解答例(嶋田君)
if ( b <= a && c <= a )
printf("この中で一番大きいのは、%fです!\n",a);
else if ( a <= b && c <= b )
printf("この中で一番大きいのは、%fです!\n",b);
else
printf("この中で一番大きいのは、%fです!\n",c);
課題2の考え方(2)
• 3つの値を「暫定最大値」と比較する
max
a
c
b
課題2の解答例(前淵君)
max = a; //暫定的にaを最大とする
if(b > max) max = b;
if(c > max) max = c;
DEBUGの方法
1. break point
2. step 実行
3. watch機能
DEBUGの方法(sample)
#include <math.h>
int main()
{
double x,y;
int z;
x = 3;
y = sqrt(3);
z = y*10;
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.
+、ー、*、/を用いた演算(すべて使うこと)
sqrt, sin, cos, tanのいずれかを用いた計算
printfによる表示(出力)
scanfを用いた入力
if文
switch文
平方根を求めるプログラム
三角関数
#include <stdio.h>
#include <math.h>
int main()
{
double x = 2;
double y;
y = sqrt(x);
sin(x);
printf(“
%fです”,y);
printf(“ xの平方根は
sin(x)は %fです”,y);
} printf(“ cos(x)は %fです”,cos(x));
printf(“ tan(x)は %fです”,tan(x));
}
三角関数
三角関数sin(x),cos(x),tan(x)について
• xはdouble型でなければならない.
• xはrad単位(180°= π [rad])
• 計算結果は,double型になる
tan(π/4)を計算するとき,
double pi = 3.141592;
double result;
result = tan(pi / 4);
注意事項
• ソースファイルについて
ソースファイルは添付ファイルで送る
ソースファイル以外は送らない
ソースファイルの名前は,半角のみ使用
• メールについて
件名は,学籍番号+半角スペース+氏名
(例)S09F2099 松木裕二
本文にも短いカバーレター(説明)をつける
その他
• 講義に関する質問・課題提出など:
[email protected]
• Feed back page:
http://www.fit.ac.jp/~matsuki/cgi-bin/newpage11.html
メールアドレスの入力は不要です
ニックネームを決めてください(Ranking表示に使います)