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

問 6(提出プログラム名:ex0306.c)

次の手順に従って 2 つの整数で作られる分数を出力するプログラムを作成しなさい.
ただし,約分は考えなくてよい
提出するソースファイル(ソースプログラム)のファイル名は ex0306.c としなさい.

【プログラムとして実現する処理手順】
必ずこれに従うこと.従っていないプログラムは(たとえ正しく動作しても)すべて不正解とみなす.
(1) 2 つの整数 xy を読み込む.
(2) もし y == 0 ならば「表示できません」と出力する.
  そうでないならば以下の(2-1),(2-2) を実行する:
  (2-1) もし y < 0 ならば,その時だけは x = -xy = -y を実行する.
   (そうでない時は何もしない.
    つまり,この手順(2-1) に対応する if 文では else 部は不要である.)
  (2-2) xyx/y」のかたち(スラッシュ「 / 」を挟むかたち)で出力する.

【補足説明】上の手順(2-1)でやっている内容:
分母として表示しようとしている整数 y が負の数の場合そのまま表示するとマイナスが付いてしまうので,分子と分母の両方に -1 をかけることで分母が必ず正の数になるよう調整しています.

【ヒント】
上の手順は以下の構造になります:

 if ( y == 0 )
 {
   「表示できません」と出力
 }
 else

 {
   if ( y < 0 )
   {
     x = -x;
     y = -y;
   }
   x と y を x/y のかたちで出力する
 }
 

  • 【プログラムの実行結果】(その1)赤字は実行時にキーボードから入力する内容
整数を 2 つ入力してください:3 0
表示できません
  • 【プログラムの実行結果】(その2)赤字は実行時にキーボードから入力する内容
整数を 2 つ入力してください:12 -5
-12/5
  • 【プログラムの実行結果】(その3)赤字は実行時にキーボードから入力する内容
整数を 2 つ入力してください:-123 -8
123/8
  • 【プログラムの実行結果】(その4)赤字は実行時にキーボードから入力する内容
整数を 2 つ入力してください:-3 6
-3/6

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
実行の画面出力が上の例と違うきちんと確認していない).
  (例1)分母の方にマイナス記号を表示させてしまっている.
  (例2)「表示できません」に該当する場合でも分数を表示させてしまっている.
■ プログラムの内容が問題文で与えられている手順と違っている
 目的の動作を実現する方法は複数あるので問題文で与えられている手順以外でもうまく動く
 プログラムを作ることは可能ではあるが,ここでは手順(専門用語でアルゴリズムという)通り
 に作ることの練習を兼ねている
ので,指定された手順以外で作った場合は不正解扱いになる.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


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