課題 [3] プログラムの流れの分岐(4/9)

問 4(提出プログラム名:ex0304.c)

2 つの整数 x, y を読み込み,大きい方の値を小さい方の値で割った答え(商)と余りを出力するプログラムを作成しなさい.ただし,小さい方の値が 0 以下 であった場合は「計算できません(注)と表示すること.
提出するソースファイル(ソースプログラム)のファイル名は ex0304.c としなさい.
(注)まず,0 で割るというのは数学的に定義されない.また,第2回の講義で説明したように,負の数で割った場合の「余り」の扱いは混乱を招くのでここでは考えないことにする.

【ヒント】
一気に答えを求めようとすると x, y の組合せがいろいろあるため無駄に複雑なプログラムになってしまいます.ここは次のように2段階に分けて考えると簡単に書けます.
(プログラミングでは問題をいかにシンプルに考えるかが重要です.)

(1)まず最初に,
x, y とは別に largesmall という変数も用意しておきます.
そして,x と y の大きい方を large へ,そうでない方を small へそれぞれ代入しておきます.

(2)上の処理のおかげで,小さい方が small で表されることは確定しています.
それゆえ話は簡単になって,
 もし small <= 0 ならば「計算できません」と表示するだけでよく,
 さもなくば largesmall の割り算を表示(商と余りを表示)するだけでよくなります.
  (課題 3 (ex0303.c) も参考)

  • 【プログラムの実行結果】(その1)赤字は実行時にキーボードから入力する内容
x を入力してください:15
y を入力してください:21
21 / 15 = 1 ... 6
  • 【プログラムの実行結果】(その2)赤字は実行時にキーボードから入力する内容
x を入力してください:14
y を入力してください:0
計算できません
  • 【プログラムの実行結果】(その3)赤字は実行時にキーボードから入力する内容
x を入力してください:-2
y を入力してください:9
計算できません
  • 【プログラムの実行結果】(その4)赤字は実行時にキーボードから入力する内容
x を入力してください:5
y を入力してください:5
5 / 5 = 1 ... 0

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
実行の画面出力が上の例と違うきちんと確認していない).
  (例1)出力に入力値を使っておらず「x / y =」のようにアルファベット表記になっている.
  (例2)割り算の記号が半角の / ではなく全角の/や÷になってしまっている.
  (例3)「計算できません」と表示した場合でも計算をさせてしまっている.
      (場合分けができていない)
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


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