練習 [3] プログラムの流れの分岐(3/5)

練習 3(提出プログラム名:p0303.c)

サンプルプログラム 3 (sample3.c)p0303.c という別の名前のファイルにコピーしなさい.そして,p0303.c を編集して以下の例のように実行できるプログラムを作りなさい.
ただし,このプログラムで if は 2 回までしか使ってはいけません.

このプログラムでは 2 つの整数を読み込み(それらを x, y として),
 (1) 「x の 2乗 < y」 の時:「◯は△の平方根よりも小さいです」と表示する.
 (2) 「そうでない」時:
  (2-1) 「x の 2 乗 > y」 の時:「◯は△の平方根よりも大きいです」と表示する.
  (2-2) 「そうでない」時(つまり,上のいずれでもない時):「◯は△の平方根です」と表示する.
ただし,表示の際には◯と△にはいずれも実際に入力された x と y を使用すること(以下の実行例を参照).
なお,x, y はいずれも 1 以上の整数と仮定してプログラムを作ってよい.

【ヒント】
上の(1), (2), (2-1), (2-2) という判定は,以下の構造で実現できます.
 if ( x*x < y )
 {
   (1)の場合の処理 
 }
 else

 {
  if ( x*x > y )

  {
    (2-1)の場合の処理
  }
  else

  {
    (2-2)の場合の処理

  }
 }

  • 【プログラムの実行例】(その1)赤字は実行時にキーボードから入力する内容
    以下の実行例では実際に入力された 3 と 14 が出力で使われている(x や y といったアルファベットではない)点に注意せよ
2 つの整数を入力してください:3 14
3 は 14 の平方根よりも小さいです
  • 【プログラムの実行例】(その2)赤字は実行時にキーボードから入力する内容
    以下の実行例2では実行例1とは違って「大きいです」と表示される点に注意せよ(コピペで作って同じメッセージを表示させてしまわないこと)
2 つの整数を入力してください:7 36
7 は 36 の平方根よりも大きいです
  • 【プログラムの実行例】(その3)赤字は実行時にキーボードから入力する内容
2 つの整数を入力してください:6 36
6 は 36 の平方根です

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 上の実行例と出力の結果が違っているよく確認していない).
 (例1)「x は y の平方根…」という表示で x と y がアルファベットのままになっている.
     (実際に入力された整数を表示させるのが正解)
 (例2)上に示された3種類の実行例を試していない.
■ 処理(2-2) の前にわざわざ if ( x*x == y ) という if 文を書いている
 このような if 文を書くのは完全に無駄です.なぜなら,(2-2) が実行されるということは,その上の 2 つの if 文の条件がいずれも成立しなかった場合しかありえないからです.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


ミスが無いことを確認したら次の問題へ → [ 練習4 (p0304.c) ]