練習 5(提出プログラム名:p0505a.c)※加点対象
この問題は配列を使った練習問題であり
中級クラスの受講生は必須ではない(提出しなくてもよい)が,上級クラスの受講生は必須とする.
なお,どちらのクラスであっても適切に正解すれば加点対象として扱う.
まず,このプログラム p0505a.c をダウンロードしなさい.
このプログラムでは整数 n を読み込んだ後,配列へ先頭から n, n-1, n-2, … という具合いに 1 ずつ減っていく整数を格納している.そして,その内容を「整列前」として出力させている.
その後,バブルソートのアルゴリズムに従って配列の内容を昇順(小さい順)に並べかえ,
再びその内容を「整列後」として出力させようとしているが肝心のバブルソート部分が抜けている.
これを完成させなさい.
ただし,この問題では最初に入力される整数 n は 1 以上 256 以下であると仮定してプログラムを作ってよい.
【注意】この問題では必ず「バブルソート」のアルゴリズムを実装すること.それ以外のアルゴリズムでもって並べ替えを行ってはいけません.
【バブルソート】
詳しくは「データ構造とアルゴリズム」の講義で説明されているはずなので,ここでは簡単にふれるだけにしておきます.
要は「隣り合う数値の大小関係が目的に合っていなければ値を交換する」という行為をひたすら繰り返すだけのアルゴリズムです.
プログラムにあわせて,データ数は n とし,各データは data[j] 等で表すことにすると,
① i = 0 ~ n-1 の範囲で以下を繰り返す.
② j = 0 ~ n-1-i の範囲で③を繰り返す.
③もし data[j] > data[j+1] ならば両者の値を入れ替える.
- 【プログラムの実行例】(その1)※赤字は実行時にキーボードから入力する内容
データ数を入力してください:10 ⏎ 整列前:⏎ 10 9 8 7 6 5 4 3 2 1⏎ ⏎ 整列後:⏎ 1 2 3 4 5 6 7 8 9 10⏎
- 【プログラムの実行例】(その2)※赤字は実行時にキーボードから入力する内容
データ数を入力してください:2 ⏎ 整列前:⏎ 2 1⏎ ⏎ 整列後:⏎ 1 2⏎
- 【プログラムの実行例】(その3)※赤字は実行時にキーボードから入力する内容
データ数を入力してください:1 ⏎ 整列前:⏎ 1⏎ ⏎ 整列後:⏎ 1⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 上に示した3通りの実行例と出力結果が違っている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
第 5 回(Cプログラミング;3 限目の方)の練習問題は以上の5問です.
p0501a.c ~ p0505a.c を Moodle から提出してください.※ただし,ファイル名を間違えないこと.
なお,コンパイルエラーや無限ループになるプログラムを 1 個でも提出した場合は総合評価を 0 点とするので十分に注意すること.
なお,提出後に間違いに気付いた場合,〆切前であれば差し替え(上書き)は可能です.