- ベストアンサー
ifと不等記号( < & > )のみを使って、最大数と最小数を求める (* 超初心者です)
宿題で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 */
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
数学的に num1 > num2 > num3 が成り立つ時というような意味で if(num1 > num2 > num3) { … } とは使えません 左から右に評価される段階で (num1 > num2) > num3 ( 0 or 非0 ) > num3 のように評価されて、意図する所とは違ったものになってしまいます。 例えば、num1 が一番大きいという場合には、 (num1 > num2) && (num1 > num3) というような条件になると思います。
その他の回答 (4)
- peko_pee
- ベストアンサー率53% (45/84)
ご質問のコードについての回答ではありませんが、考え方としてこんなのもある というところを… ・変数をもうひとつ使える ・変数の内容を入れ替えてもかまわない という条件が許されれば、3つの if 文で num1~num3 の内容を大きさ順に 並べ替えることが出来ます。あとは num1 と num3 を出力すればOK。 宿題ということなので具体例は控えますが、いかにして手を抜くかというのも プログラミングの面白さですから、こういう方法を考えてみるのも勉強になると 思います。
- yaemon_2006
- ベストアンサー率22% (50/220)
こんな感じでしょうか。 #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; }
- ko_kinta
- ベストアンサー率39% (43/109)
"不等記号( < & > )"は"不等記号( < と>)"という意味ではありませんよ。 "<"と"&"と">"を使いなさいということです。
- hana-hana3
- ベストアンサー率31% (4940/15541)
もう一度教科書を読み直しましょう。 http://wisdom.sakura.ne.jp/programming/c/c6.html 貴方の頭の中で考えた条件式と、if文で使える条件式は違います。