ページ 11

3つの値

Posted: 2017年11月20日(月) 08:51
by エドシーラン
お世話になります。
この実行例のelseを使わないなるべく簡単なプログラムを教えてください。
整数A:12
整数B:12
整数C:12
三つの値は等しいです。

三つの整数を入力してください。
整数A:8
整数B:10
整数C:8
二つの値が等しいです。
三つの整数を入力してください。
整数A:10
整数B:6
整数C:100
三つの値は異なります。

Re: 3つの値

Posted: 2017年11月20日(月) 10:44
by かずま
エドシーラン さんが書きました: この実行例のelseを使わないなるべく簡単なプログラムを教えてください。
これは簡単なプログラムと言えますか?

コード:

#include <stdio.h>

int main(void)
{
    while (1) {
        int a, b, c;
        puts("\n三つの整数を入力してください。");
        printf("整数A: "); if (scanf("%d", &a) != 1) break;
        printf("整数B: "); if (scanf("%d", &b) != 1) break;
        printf("整数C: "); if (scanf("%d", &c) != 1) break;
        switch ((a == b) + (b == c) + (c == a)) {
        case 0: puts("三つの値は異なります。"); break;
        case 1: puts("二つの値が等しいです。"); break;
        case 3: puts("三つの値は等しいです。"); break;
        }
    }
    return 0;
}

Re: 3つの値

Posted: 2017年11月20日(月) 11:31
by かずま
これはどうですか?

コード:

        int d = (a == b) + (b == c) + (c == a);
        puts(d==0 ? "三つの値は異なります。" :
             d==1 ? "二つの値が等しいです。" :
                    "三つの値は等しいです。");
質問をよく読んだら、これは問題の丸投げにも見えます。
フォーラムルールに反しています。自分で考えたことを
示すために、else を使ったものでもいいし、簡単でなくても
いいですから、何らかのプログラムを提示してください。