dポイントプレゼントキャンペーン実施中!

/*
読み込んだ三つの整数値の最大値を求めて表示
*/

#include <stdio.h>

int main(void)
{
int n1, n2, n3, max;

puts("三つの整数を入力してください。");
printf("整数1:"); scanf("%d", &n1);
printf("整数2:"); scanf("%d", &n2);
printf("整数3:"); scanf("%d", &n3);

max = n1;
if (n2 > max) max = n2;
if (n3 > max) max = n3;

printf("最大値は%dです。\n", max);

return (0);
}


上記のソースコードを、条件演算子を用いた形にするという問題なのですが、初心者で理解しずらいところもありどうやっても同じ結果を出すことが出来ないため質問させていただきました。
ご教授お願いしますm(_)m

A 回答 (3件)

#1、2です。


間違えました。

max = n1;
if (n2 > max)
printf("最大値は%dです。", (n2 > n3) ? n2 : n3);
else
printf("最大値は%dです。", (n3 > max) ? n3 : max);
return(0);
}
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

条件演算子の使い方を間違っていて難しく考えていたんですね。

とても丁寧な説明で理解することが出来ました。

本当にありがとうございましたm(_)m

お礼日時:2008/11/01 18:42

#1です。



問題のとおり、if文を条件演算子に変更しましょう。
max = n1;
max = n2 > max ? n2 : max;
max = n3 > max ? n3 : max;

どうしても、前の補足のように使用したいなら、
max = n1;
if (n2 > max)
printf("最大値は%dです。", (n2 > n3) ? n2 : n3);
else if (n3 > max)
printf("最大値は%dです。", n3);
return(0);
}
でどうでしょう?

条件演算子の使い方が間違っています。
条件 ? 式1 : 式2;

× (n2 > max) ? max = n2 : n1;
○ (n2 > max) ? n2 : n1;
にすれば、n2かn1が返ります。
式に代入したいときは、
max = n2 > max ? n2 : max;
の様にすると、n2か前のmaxの値が返ります。
    • good
    • 0

同じ結果を出すことができなかったソースコードを補足してください。

この回答への補足

申し訳ありません。
条件演算子 a ? b : c
自分なりに解いてみたのですが解決しない状態です・・・

#include <stdio.h>

int main(void)
{
int n1, n2, n3, max;

puts("二つの整数を入力してください:");
printf("整数1:");scanf("%d", &n1);
printf("整数2:");scanf("%d", &n2);
printf("整数3:");scanf("%d", &n3);

max = n1;

if (n2 > n1)
printf("最大値は%dです。", (n2 > max) ? max = n2 : n1);
else if (n3 > n2)
printf("最大値は%dです。", (n3 > max) ? max = n3 : n2);



return(0);
}

補足日時:2008/11/01 18:01
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!