★分岐構造:条件の連結2★
では、「&&」や「||」を使った問題を出していきましょう。
新しく考えるのではなく、以前に出した問題を改良する方法をとります。
まずは、BMIのプログラムを思い出してください。
BMIとは「ボディ・マス・インデックス指数」のことですよね。
以前は、ネットで計算式を探してくださいといいましたが、今度は結果の表示についてです。
BMI判定は、計算結果によって変化します。
BMI判定は25.0以上は肥満。
18.5以上25未満は正常域
18.5未満はやせの判定となります。
これをプログラムで表示させたいと思います。
実行結果は、下記のようにしたいと思います。
<実行結果1 VC++ Express Edition>
あなたの体重(kg)を入力してください:90
あなたの身長(m)を入力してください:1.6
あなたのBMIは35.156250です。
判定:肥満
続行するには何かキーを押してください・・・
<実行結果2 VC++ Express Edition>
あなたの体重(kg)を入力してください:65
あなたの身長(m)を入力してください:1.7
あなたのBMIは22.491349です。
判定:正常
続行するには何かキーを押してください・・・
<実行結果3 VC++ Express Edition>
あなたの体重(kg)を入力してください:50
あなたの身長(m)を入力してください:1.7
あなたのBMIは17.301038です。
判定:痩せ
続行するには何かキーを押してください・・・
考えてみてください。
解答例です。
<sample program 016-01>
#include <stdio.h>
int main( void )
{
double weight;
double height;
double bmi;
printf( "あなたの体重(kg)を入力してください:" );
scanf( "%lf", &weight );
printf( "あなたの身長(m)を入力してください:" );
scanf( "%lf", &height );
bmi = weight / height / height;
printf( "あなたのBMIは%lfです。\n", bmi );
if( bmi >= 25.0 ) {
printf( "判定:肥満\n" );
}
else {
if( bmi >= 18.5 && bmi < 25.0 ) {
printf( "判定:正常\n" );
}
else {
printf( "判定:痩せ\n" );
}
}
return 0;
}
|
<実行結果1 VC++ Express Edition>
あなたの体重(kg)を入力してください:90
あなたの身長(m)を入力してください:1.6
あなたのBMIは35.156250です。
判定:肥満
続行するには何かキーを押してください・・・
<実行結果2 VC++ Express Edition>
あなたの体重(kg)を入力してください:65
あなたの身長(m)を入力してください:1.7
あなたのBMIは22.491349です。
判定:正常
続行するには何かキーを押してください・・・
<実行結果3 VC++ Express Edition>
あなたの体重(kg)を入力してください:50
あなたの身長(m)を入力してください:1.7
あなたのBMIは17.301038です。
判定:痩せ
続行するには何かキーを押してください・・・
ポイントは、「18.5以上25未満は正常域」で「&&」を使うことです。
もう1つ問題を出しましょう。
うるう年のプログラムを「&&」や「||」を使って作り直してみてください。
ヒントは、「4で割り切れて、「しかも」100で割り切れない「または」400で割り切れる・・・です。
解答例です。
<sample program 016-02>
#include <stdio.h>
int main( void )
{
int year;
printf( "西暦を入力してください:" );
scanf( "%d", &year );
if( ( year % 4 ) == 0 && ( year % 100 ) != 0 || ( year % 400 ) == 0 ) {
printf( "%d年はうるう年です。\n", year );
}
return 0;
}
|
<実行結果1 VC++ Express Edition>
西暦を入力してください:2006
続行するには何かキーを押してください・・・
<実行結果2 VC++ Express Edition>
西暦を入力してください:2004
2004年はうるう年です。
続行するには何かキーを押してください・・・
<実行結果3 VC++ Express Edition>
西暦を入力してください:2000
2000年はうるう年です。
続行するには何かキーを押してください・・・
<実行結果4 VC++ Express Edition>
西暦を入力してください:1900
続行するには何かキーを押してください・・・
( year % 4 ) 等についている「(」「)」は無くても大丈夫だと思います。
ここまで使いこなせれば、問題ないでしょう。
これまでに「ネスト」で処理していた問題についても、「&&」や「||」で書き換えることが出来ないかどうか、検討してみてください。
次は、「条件の否定」ついて書きます。