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

問 9(提出プログラム名:ex0209a.c)
※上級クラスは必須(中級クラスはできる人だけでよい)
(いずれも加点対象)

この問題は while 文または for 文による繰り返し構造を使った練習問題になっています

2 つの整数 x, y を読み込み,以下のアルゴリズムに従って x/y の値を小数点以下第 30 位まで正確に計算して出力するプログラムを作りなさい.ただし,提出するファイル名は ex0209a.c とすること.
ここでは x, y は常に 1 以上であると仮定してプログラムを作ってよい.
ただし,変数は int 型のものしか使ってはいけません.

【実装すべきアルゴリズム】
xy の値を「x/y = 」のかたちで出力する(改行はしない).
 例えば,x = 2, y = 13 ならば「2/13 = 」と出力する.
xy で割った商を出力する(改行はしない).
 例えば,x = 2, y = 13 ならば「0」と出力する.
③小数点(ピリオド)を 出力する(改行はしない).
④以下の⑤~⑥を 30 回繰り返す:
  ⑤ xy で割った余りを 10 倍し,それを改めて x とする.
  ⑥ xy で割った商を出力する(改行はしない).
⑦上の繰り返しが終了したら,改行(\n)を出力する.

【補足】
上に示したアルゴリズムは,小学校で習う割り算の手順をそのまま表している
こうすることで計算機環境に依存することなく,任意の桁数の精度で割り算を計算できる.
一方,double 型等を使うと精度には限界があるため,正しく求まらない

  • 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
2 つの整数を入力してください:2 13
2/13 = 0.153846153846153846153846153846
  • 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
2 つの整数を入力してください:111 2047
111/2047 = 0.054225696140693698094772838299
  • 【プログラムの実行結果】(その3)※赤字は実行時にキーボードから入力する内容
2 つの整数を入力してください:1 7
1/7 = 0.142857142857142857142857142857

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 上の実行例と出力が違っていることを見落としている.
■ 「2/13」の部分が x/y になってしまっている(実行例1の場合).
■ 小数点(ピリオド)や最後の改行を出力し忘れている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


問 4 ~問 9 は 4/23(火)12:00 までに提出を済ませてください.※23:59 ではないので注意!
(ex0204a.c ~ ex0209a.c を Moodle から提出してください.)
くれぐれも各問題で記載されている注意事項や「過去にあったミス」を見落とさないようにしてください.
なお,提出後に間違いに気付いた場合,〆切前であれば差し替え(上書き)は可能です.