Top / プログラミングおよび実習II / 20051013

[ 高橋のページ ] [ プログラミングおよび実習II? ]

プログラミングおよび実習II 2005年10月13日[edit]

今日の課題: 単純選択法によるデータの並べかえ[edit]

課題1013-A (締切:10月13日,延長不可)[edit]

10月12日の講義資料の演習問題(単純選択法により配列の中身を並べかえる関数を紙に書く)をやってください.

解答例?

課題1013-B (締切:10月20日)[edit]

整数のデータが与えられたときに,

  1. それを配列に格納する
  2. それらを単純選択法によって並べかえる
  3. できた配列の内容を表示する

というプログラムを作りましよう.名前は 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]

ポインタについて復習しよう[edit]

こちらをどうぞ: 「ポインタの話


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-08-13 (水) 13:45:19 (1836d)