問 3(提出プログラム名:ex0903.c)
このプログラム(ex0903.c)をダウンロードし,その中の関数 gcd を完成させなさい.
関数 gcd は,引数で与えられた2 つの整数 x, y について,それらの最大公約数を返すものとする.
ただし,関数 main の内容は一切書き換えないこと.
また,x, y はいずれも 1 以上の整数であると仮定してプログラムを作ってよい.
【最大公約数を求める手順(アルゴリズム)】
必ずこの手順に忠実に従うこと.それ以外は誤りと見なされます.
(1)r = x % y とする.
(2)r != 0 である限り,次の(2a),(2b),(2c)をこの順番で繰り返し実行する:
(2a)x = y とする.
(2b)y = r とする.
(2c)r = x % y とする.
(3)上の繰り返しが終わった時点での y の値が求める最大公約数である.
【注意事項】
以前にも似たようなプログラムを作ってもらっていますが,
この問題では x と y の大小関係をチェックする必要はありません.
(上のアルゴリズムは x < y であっても問題なく動作しますので,単純に上のアルゴリズム通りにプログラムを書くだけでよいです)
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
2 つの整数を入力してください:24 12 24 と 12 の最大公約数は 12 です⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
2 つの整数を入力してください:544 119 544 と 119 の最大公約数は 17 です⏎
- 【プログラムの実行結果】(その3)※赤字は実行時にキーボードから入力する内容
2 つの整数を入力してください:154 528 154 と 528 の最大公約数は 22 です⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 実行の画面出力が上の例と違う(きちんと確認していない).
■ プログラムを必要以上に複雑に書いてしまっている
(問題文の手順に従って while 文で書くだけでよいのに,わざわざ違うやり方をしている).
■ main 関数を書き換えてしまっている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
以上の 3 問は明日(6/14)の 16時までに提出を済ませてください.
(ex0901.c ~ ex0903.c を Moodle から提出してください.)
くれぐれも各問題で記載されている注意事項や「過去にあったミス」を見落とさないようにしてください.なお,コンパイルエラーや無限ループが含まれる場合は総合評価を 0 点とします.
提出後に間違いに気付いた場合,〆切前であれば差し替え(上書き)は可能です.
← [ 問 1 (ex0901.c) ]
← [ 問 2 (ex0902.c) ]
次のページ以降に問 4 ~問 9 があります.
問 4 以降を明日の16時までに早期提出した場合は加点の対象とします
(一部のみを早期提出してもよいです).
※なお,明らかに間違っている(まともに動かない)プログラムを早期提出するのは絶対にやめてください.不正に加点を得ようとした行為と見なして減点とします.
次の問題へ → [ 問4 (ex0904.c) ]