[← 演習のページへ戻る]
サンプルプログラム 3 の内容二つの整数を読み込み,それらが異なる場合は大きい方を表示する.同じ場合は,二つが同じであることを表示する. 1: #include <stdio.h> 2: 3: int main(void){ 4: int x, y; 5: 6: printf("整数を二つ入力してください:"); 7: scanf("%d %d", &x, &y); 8: 9: if ( x > y ){ 10: printf("%d の方が大きいです\n", x); 11: } 12: else{ 13: if ( x < y ){ 14: printf("%d の方が大きいです\n", y); 15: } 16: else{ 17: printf("二つは同じです\n"); 18: } 19: } 20: 21: return 0; 22: } 9-19 行目:外側の if ... else 文8: 9: if ( x > y ){ 10: printf("%d の方が大きいです\n", x); 11: } 12: else{ 13: if ( x < y ){ 14: printf("%d の方が大きいです\n", y); 15: } 16: else{ 17: printf("二つは同じです\n"); 18: } 19: } 20:この問題では,次の三つの場合について適切に場合分けを行う必要があります.
まずは 1 段目(外側)を見てみましょう. 9 行目で x > y かどうかを確認しています. これは上の表でいえば,(1) に該当するかどうかの確認です. したがって,else { ... } の方は, 「(1) に該当しない場合」 = 「(2) または (3) に該当する場合」 を意味します.
(2) と (3) では出力すべき内容が異なるので,ここでも if 文による場合分けが必要になってくるのです. 13-18 行目:内側の if ... else 文8: 9: if ( x > y ){ 10: printf("%d の方が大きいです\n", x); 11: } 12: else{ 13: if ( x < y ){ 14: printf("%d の方が大きいです\n", y); 15: } 16: else{ 17: printf("二つは同じです\n"); 18: } 19: } 20:9 行目の if 文で条件(x > y)が成立しない場合,この else 部分が実行されることになります.
(2) ではない場合に対応するのは明らかですが,既に(1) ではないことも確定していることに注意してください. つまり,(2) でも (1) でもない場合に該当するので,残った (3) の場合のみを意味します. よって,わざわざ if ( x == y ){ ... } という三つ目の if 文を書く必要はないのです. |