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

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

2 つの整数 x, y を読み込み,x/y の値を実数として出力する(小数点以下は第 3 位まで表示する;全体の桁数は指定しない)プログラムを作成しなさい.ただし,y が 0 であった場合は割り算を定義できないので,代わりに「計算できません」と表示すること.
なお,x と y は整数なので,必ず int 型の変数として用意すること.これらを double 型の変数として用意してはいけません
提出するソースファイル(ソースプログラム)のファイル名は ex0303.c としなさい.

【注意】
割り算を行うのは y が 0 でないことが確認できた場合となるよう注意すること!
先に割り算の結果を計算しておいて,表示だけを切り替えようと考える人もいるのですが,0 で割るという行為そのものが許されないため,y が 0 の場合に割り算をやってしまうとプログラムが異常終了してしまう可能性があります.

【ヒント】
まずは y が 0 かどうかを if 文で確認し,それによって動作を切り替えることが必要です.
例えば次のように書くとよいでしょう.
 if ( y == 0 )
 {
  「計算できません」と表示
 }
 else

 {
  「x/y の値」を小数点以下第3位まで表示
   ※x/y は int 型どうしの割り算なので, x を double 型にキャストする必要があります.
 }

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

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
実行の画面出力が上の例と違うきちんと確認していない).
 (例1)表示部分で入力された整数を使っておらず,「x/y =」といった表示になっている.
 (例2)適切にキャストができておらず,小数点以下が 0 になってしまっている
    (実行例1の場合,15/4 = 3.000 になってしまっている)
 (例3)出力における小数点以下の桁数の指定方法(小数点以下を 3 桁に指定)を間違えている.
■ 入力に使用する変数 x, y を double 型で用意してしまっている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


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


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

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