第4講 if文(もしもボックスの世界)
第8話 5段階判定
実行画面が
・
・
出席番号=33
国語=11
社会=60
数学=25
理科=38
英語=49
合計点=183
出席番号33番はかなりの努力が必要です。
出席番号=34
国語=84
社会=96
数学=42
理科=3
英語=51
合計点=276
出席番号34番はそこそこ頑張りました。
出席番号=35
国語=92
社会=37
数学=75
理科=21
英語=97
合計点=322
出席番号35番はかなり頑張りました。
・
・
出席番号=37
国語=82
社会=35
数学=54
理科=100
英語=19
合計点=290
出席番号37番は頑張りました。
出席番号=38
国語=39
社会=1
数学=89
理科=28
英語=68
合計点=225
出席番号38番は努力が必要です。
・
・
となるソフトのコード例
#include<iostream> //入出力のために組み込む
using namespace std; //coutを使えるようにするために必要
int main() {
int a, b, c, d, e, g; //a:国語 b:社会 c:数学 d:理科 e:英語 の得点 g:5教科合計得点
cout << "出席番号と各教科の点数をキーボードから入力して下さい。" << endl;
for (int s = 0; s < 40; s++) {//s + 1;出席番号
//以下各教科得点ランダム発生
a = 1 + rand() % 100;
b = 1 + rand() % 100;
c = 1 + rand() % 100;
d = 1 + rand() % 100;
e = 1 + rand() % 100;
//以上各教科得点ランダム発生
//以下出席番号と各教科得点表示
cout << "出席番号=" << s + 1 << endl;
cout << "国語=" << a << endl;
cout << "社会=" << b << endl;
cout << "数学=" << c << endl;
cout << "理科=" << d << endl;
cout << "英語=" << e << endl;
//以上出席番号と各教科得点表示
g = a + b + c + d + e; //合計点算出
cout << "合計点=" << g << endl; //合計点表示
cout << "出席番号" << s + 1 << "番は";
if (g >= 300) {
cout << "かなり頑張りました。" << endl; //結果の表示
}
else {
if (g >= 280) {
cout << "頑張りました。" << endl; //結果の表示
}
else {
if (g >= 240) {
cout << "そこそこ頑張りました。" << endl; //結果の表示
}
else {
if (g >= 200) {
cout << "努力が必要です。" << endl; //結果の表示
}
else {
cout << "かなりの努力が必要です。" << endl; //結果の表示
}
}
}
}
cout << endl; //改行
}
}
頭の体操としてはとても良いかもしれませんが、
入れ子は2段階までにとどめておくべきでしょう。
プログラミングは出来るだけシンプルにが原則だからです。
そこで、今回のこの複雑なコードをif文を入れ子式で使わずに、
実現することを考えます。
ヒントを書いておくと
if (g >= 300) A;
if (g >= 280 && g<300) B;
・;
・;
・;
・;の部分は1文のif文です。
g >= 280 && g<300の&&はかつ(そして)を意味しますから、
gが280以上かつ300未満になります。
それでは皆さん書き直して下さい。