[ [[高橋のページ: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」の講義資料等で復習しといて下さい

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS