★分岐構造:条件の連結2★


では、「&&」や「||」を使った問題を出していきましょう。

新しく考えるのではなく、以前に出した問題を改良する方法をとります。

まずは、BMIのプログラムを思い出してください。

BMIとは「ボディ・マス・インデックス指数」のことですよね。

以前は、ネットで計算式を探してくださいといいましたが、今度は結果の表示についてです。

BMI判定は、計算結果によって変化します。

  BMI判定は25.0以上は肥満。

  18.5以上25未満は正常域。

  18.5未満はやせの判定となります。

これをプログラムで表示させたいと思います。

実行結果は、下記のようにしたいと思います。

<実行結果1>

あなたの体重(kg)を入力してください:90
あなたの身長(m)を入力してください:1.6
あなたのBMIは35.156250です。
判定:肥満
続行するには何かキーを押してください・・・

<実行結果2>

あなたの体重(kg)を入力してください:65
あなたの身長(m)を入力してください:1.7
あなたのBMIは22.491349です。
判定:正常
続行するには何かキーを押してください・・・

<実行結果3>

あなたの体重(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は%fです。\n", bmi);

    if (bmi >= 25.0) {
        printf("判定:肥満\n");
    }
    else {
        if (bmi >= 18.5 && bmi < 25.0) {
            printf("判定:正常\n");
        }
        else {
            printf("判定:痩せ\n");
        }
    }

    return 0;
}

<実行結果1>

あなたの体重(kg)を入力してください:90
あなたの身長(m)を入力してください:1.6
あなたのBMIは35.156250です。
判定:肥満
続行するには何かキーを押してください・・・

<実行結果2>

あなたの体重(kg)を入力してください:65
あなたの身長(m)を入力してください:1.7
あなたのBMIは22.491349です。
判定:正常
続行するには何かキーを押してください・・・

<実行結果3>

あなたの体重(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>

西暦を入力してください:2006
続行するには何かキーを押してください・・・

<実行結果2>

西暦を入力してください:2004
2004年はうるう年です。
続行するには何かキーを押してください・・・

<実行結果3>

西暦を入力してください:2000
2000年はうるう年です。
続行するには何かキーを押してください・・・

<実行結果4>

西暦を入力してください:1900
続行するには何かキーを押してください・・・

(year % 4) 等についている「( )」は無くても大丈夫だと思います。

ここまで使いこなせれば、問題ないでしょう。

これまでに「ネスト」で処理していた問題についても、「&&」や「||」で書き換えることが出来ないかどうか、検討してみてください。


次は、「条件の否定」ついて書きます。


次へ

戻る

目次へ