[ [[高橋のページ:http://tortoise1.math.ryukoku.ac.jp/~takataka/index-j.html]] ]
[ [[プログラミングおよび実習II2006]] ]
*プログラミングおよび実習II 2006年10月6日 [#v5b5d76d]
#contents
**今日の課題: 単純選択法による並べかえのプログラム [#a292e5de]
テストの得点を表すデータがいくつか与えられたときに,
+それらを配列に格納する
+それらを単純選択法によって昇順に並べかえる
+できた配列の内容を表示する
というプログラムを作りましよう.前回の score1.c などと同様に,
-データは整数,データ件数は最大50
-はじめにデータ件数を入力し,次に各データを順番に入力する
こととします.
***課題1006-A(締切: 今日の実習開始後すぐ,締切後チェック対象外) [#r14ff2dc]
-10月5日の演習問題のプリントを提出し,チェックを受けてください.
***課題1006-B(締切: 次回の実習終了時)[#t4fd0fbc]
-課題Aを元にしてプログラムを完成させ,動作を確認しましょう.
-作成するソースファイル名は selectionsort1.c として下さい.
-以下のことに注意してください.
--入力部分は score1.c 等のものを流用すると楽でしょう.
--次の関数 PrintData() を使い,元のデータ,並べかえ途中の様子,結果,を出力するようにしてください.並べかえ途中の様子を表示するには,二つの要素の交換の直後に PrintData() を呼ぶようにしたらよいです.
#pre{{
void PrintData(int x[], int n)
{
int i;
for(i = 0; i < n; i++){
printf(" [%3d]", x[i]);
}
printf("\n");
}
}}
実行例はこんな感じ.
#pre{{
得点は何件ありますか? : 4
0番目の得点を入力してください : 44
1番目の得点を入力してください : 33
2番目の得点を入力してください : 22
3番目の得点を入力してください : 11
##### 元のデータ #####
[ 44] [ 33] [ 22] [ 11]
##### 並べかえ中 #####
[ 11] [ 33] [ 22] [ 44]
[ 11] [ 22] [ 33] [ 44]
[ 11] [ 22] [ 33] [ 44]
##### 並べかえ結果 #####
[ 11] [ 22] [ 33] [ 44]
}}
***課題1006-C(おまけ,締切: 今日の実習終了時,締切後チェック対象外) [#t4fd0fbc]
-これはおまけ課題です.課題Bができた人が対象です.やらなくても実習成績の減点はありませんが,やると加点があるでしょう.
-課題Bのプログラムをコピーして,「最大値を末尾にもっていく」やり方で昇順にソートするものに書き換えましょう
-作成するソースファイル名は selectionsort2.c として下さい.
**次回講義までの宿題 [#xdeae406]
次回の講義では,バブルソートのプログラムを考えます
-バブルソートってどんなんやったか,「アルゴリズムとデータ構造I,II」の講義資料等で復習しといて下さい