課題 [2] if 文(3/9)

問 3(提出プログラム名:ex0203a.c)

2 つの整数 x, y を読み込み,大きい方の値を小さい方の値で割った答え(商)と余りを出力するプログラムを作成しなさい.ただし,小さい方の値が 0 以下 であった場合は「計算できません(注)と表示すること.
提出するソースファイルのファイル名は ex0203a.c としなさい.
(注)xとyが等しい場合,大きい方の値は厳密には定まらないが,その場合は x を大きい方,y を小さい方と見なして処理すること.

【ヒント】
一気に答えを求めようとすると x, y の組合せがいろいろあるため無駄に複雑なプログラムになってしまいます.ここは次のように2段階に分けて考えると簡単に書けます.
(1)まず最初に,
x, y とは別に largesmall という変数も用意しておきます.
そして,x と y の大きい方を large へ,そうでない方を small へそれぞれ代入しておきます.

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

  • 【プログラムの実行結果】(その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 上でインデントを自動で揃える作業をやっていない).


以上の 3 問は明日(4/19)の 16時までに提出を済ませてください.
(ex0201a.c ~ ex0203a.c を Moodle から提出してください.)
くれぐれも各問題で記載されている注意事項や「過去にあったミス」を見落とさないようにしてください.例年,講義資料や注意書きをよく読まずに提出する人が(ごく一部ですが)いて大変困っています
なお,提出後に間違いに気付いた場合,〆切前であれば差し替え(上書き)は可能です.


次のページ以降に問 4 ~問 9 があります.
問 4 以降を明日の16時までに早期提出した場合は加点の対象とします
(一部のみを早期提出してもよいです).
※なお,明らかに間違っている(まともに動かない)プログラムを早期提出するのは絶対にやめてください.不正に加点を得ようとした行為と見なして減点とします.

次の問題へ → [ 問4 (ex0204a.c) ]