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

宿題でifと不等記号( < と>)のみを使って、3つの入力された整数の中から最大数と最小数を求めるプログラムを作っているのですが、コンパイルには成功してもいざ実行すると、恐らくエラーが起きていて、数字を入力しても何も出来ません。
下記の文字列はそのifの所のみを貼ったものですが、何が間違っているのでしょうか?
ちなみにelseとかは使えません m(_ _)m
純粋にifと不等記号のみしか使ってはダメみたいです。

if( num1 > num2 > num3 ) {
printf( "Smallest is %d\n", num3 );
printf( "Largest is %d", num1 );
} /* end if */

if( num1 > num3 > num2 ) {
printf( "Smallest is %d\n", num2 );
printf( "Largest is %d", num1 );
} /* end if */

if( num2 > num1 > num3 ) {
printf( "Smallest is %d\n", num3 );
printf( "Largest is %d", num2 );
} /* end if */

if( num2 > num3 > num1 ) {
printf ( "Smallest is %d\n", num1 );
printf ( "Largest is %d", num2 );
} /* end if */

if( num3 > num1 > num2 ) {
printf ( "Smallest is %d\n", num2 );
printf ( "Largest is %d", num3 );
} /* end if */

if( num3 > num2 > num1 ) {
printf ( "Smallest is %d\n", num1 );
printf ( "Largest is %d", num3 );
} /* end if */

A 回答 (5件)

数学的に


num1 > num2 > num3
が成り立つ時というような意味で
if(num1 > num2 > num3) { … }
とは使えません
左から右に評価される段階で
(num1 > num2) > num3
( 0 or 非0 ) > num3
のように評価されて、意図する所とは違ったものになってしまいます。
例えば、num1 が一番大きいという場合には、
(num1 > num2) && (num1 > num3)
というような条件になると思います。
    • good
    • 0

ご質問のコードについての回答ではありませんが、考え方としてこんなのもある


というところを…

・変数をもうひとつ使える
・変数の内容を入れ替えてもかまわない

という条件が許されれば、3つの if 文で num1~num3 の内容を大きさ順に
並べ替えることが出来ます。あとは num1 と num3 を出力すればOK。

宿題ということなので具体例は控えますが、いかにして手を抜くかというのも
プログラミングの面白さですから、こういう方法を考えてみるのも勉強になると
思います。
    • good
    • 0

 


 こんな感じでしょうか。

#include <stdio.h>

int main (void)
{
int num1, num2, num3;

printf(" 入力(整数) ");
scanf("%d %d %d", &num1, &num2, &num3);
if(num1 > num2){
if(num2 > num3){
printf("\n 最大値 %d", num1);
printf("\n 最小値 %d", num3);
return 0;
}
if(num1 > num3){
printf("\n 最大値 %d", num1);
printf("\n 最小値 %d", num2);
return 0;
}
printf("\n 最大値 %d", num3);
printf("\n 最小値 %d", num2);
return 0;
}
if(num2 > num3){
if(num1 > num3){
printf("\n 最大値 %d", num2);
printf("\n 最小値 %d", num3);
return 0;
}
printf("\n 最大値 %d", num2);
printf("\n 最小値 %d", num1);
return 0;
}
printf("\n 最大値 %d", num3);
printf("\n 最小値 %d", num1);
return 0;
}
    • good
    • 0

"不等記号( < & > )"は"不等記号( < と>)"という意味ではありませんよ。


"<"と"&"と">"を使いなさいということです。
    • good
    • 0

もう一度教科書を読み直しましょう。


http://wisdom.sakura.ne.jp/programming/c/c6.html

貴方の頭の中で考えた条件式と、if文で使える条件式は違います。
    • good
    • 0

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