[ [[高橋のページ:http://tortoise1.math.ryukoku.ac.jp/~takataka/index-j.html]] ]
[ [[プログラミングおよび実習II]] ]
*プログラミングおよび実習II 2005年10月13日
#contents
**今日の課題: 単純選択法によるデータの並べかえ
***課題1013-A (締切:10月13日,延長不可)
10月12日の講義資料の演習問題(単純選択法により配列の中身を並べかえる関数を紙に書く)をやってください.
[[解答例>プログラミングおよび実習II/解答例#ex1013]]
***課題1013-B (締切:10月20日)
整数のデータが与えられたときに,
+ それを配列に格納する
+ それらを単純選択法によって並べかえる
+ できた配列の内容を表示する
というプログラムを作りましよう.名前は selectionsort.c としてください.
これまでの score1.c などと同様に,
- データの数は最大100個
- まずデータの数を入力し,次に各データを順番に入力する
こととします.ただし,以下のことに気をつけて作成して下さい.
- 配列の中身の表示には,以下のような関数 PrintData2() を使う
void PrintData2(int data[], int n)
{
int i;
for(i = 0; i < n; i++){
printf("[%3d] ", data[i]);
}
printf("\n");
}
- データの並べかえには,課題その1で作成した関数 SelectionSort() を使う.ただし,この関数中で配列中の二つのデータを入れ替える処理の直後に PrintData2() を入れて,並べかえの途中経過を表示するようにして下さい.
実行例はこんな感じ.
$ ./a.out
Input n: 4
Input score[0]: 1
Input score[1]: 2
Input score[2]: 3
Input score[3]: 4
##### original scores #####
[ 1] [ 2] [ 3] [ 4] <-- 入力した配列そのまま
[ 4] [ 2] [ 3] [ 1] <-- 最初の入れ替え後の配列
[ 4] [ 3] [ 2] [ 1]
[ 4] [ 3] [ 2] [ 1] <-- ならべかえ終了
##### sorted scores #####
[ 4] [ 3] [ 2] [ 1]
**ポインタについて復習しよう
こちらをどうぞ: 「[[ポインタの話>http://tortoise1.math.ryukoku.ac.jp/~takataka/course2004/doc/pointer/]]」