このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1342966104/592
#  [1] 授業単元:データ構造入門 
#  [2] 問題文(含コード&リンク):問題文が長いためこちらに記載しました http://ime.nu/ideone.com/R8gaZ 
#  
#  【問題3】
#  バブルソートを用いて、整数のデータ列を昇順に整列するプログラムを作成せよ。
#  データ数をキーボード入力し、続いてその個数の整列していないデータを配列に格納し、
#  データとその添え字番号をディスプレイに一覧表示するとともにファイルへも出力する。
#  次にデータ列のソートを行い、結果の整列したデータ列をディスプレイ表示するとともに、
#  別のファイルへ出力する。なお、データ数は最大50として50をマクロ定義せよ。疑似乱数で
#  データを作成するために、【問題2】で作成した関数random_dataを使用すること。また、ソートには
#  次の関数を作成して使うこと。
#  ・void bubble(int data[],int num)
#  この関数はnum個の値が格納された配列data[]を、バブルソートアルゴリズムで昇順に並べ替える関数である。


'バブルソートを用いて、整数のデータ列を昇順に整列するプログラムを作成せよ。データ数をキーボード入力し、続いてその個数の整列していないデータを配列に格納しデータとその添え字番号をディスプレイに一覧表示するとともにファイルへも出力する。 次にデータ列のソートを行い、結果の整列したデータ列をディスプレイ表示するとともに、別のファイルへ出力する。 なお、データ数は最大50として50をマクロ定義せよ。'(_出力ファイル名,_別の出力ファイル名) :-
        'データ数は最大50としてデータ数をキーボード入力し、続いてその個数の整列していないデータを配列に格納しデータとその添え字番号をディスプレイに一覧表示するとともにファイルへも出力する。 '(_出力ファイル名,_データ数,_データならび),
        'データ列をバブルソートを用いて昇順に整列し、結果の整列したデータ列をディスプレイ表示するとともに、別のファイルへ出力する。'(_別の出力ファイル名,_データ数,_データならび,_整列したデータ列).


'データ数をキーボード入力し、続いてその個数の整列していないデータを配列に格納しデータとその添え字番号をディスプレイに一覧表示するとともにファイルへも出力する。'(_出力ファイル名,_データ数,_データならび) :-
        'データ数は最大50としてデータ数をキーボード入力し'(_データ数),
        'その個数の整列していないデータを配列に格納し'(_データ数,_データならび),
        'データとその添え字番号をディスプレイに一覧表示するとともにファイルへも出力する。'(_出力ファイル名,_データ数,_データならび).

'データ数は最大50としてデータ数をキーボード入力し'(_データ数) :-
        整数を得る(最大50のデータ数,between(1,50,_データ数),_データ数).

'その個数の整列していないデータを配列に格納し'(_データ数,_データならび) :-
        length(_データならび,_データ数),
        findall(N,(
                    member(N,_データならび),
                    N is random(_データ数) + 1),
                _データならび).

'データとその添え字番号をディスプレイに一覧表示するとともにファイルへも出力する。'(_出力ファイル名,_データ数,_データならび) :-
        open(_述力ファイル名,write,Oustream),
        'データと添え字番号を'(_データならび,_添え字番号,_データ),
        'ディスプレイに一覧表示するとともにファイルへも出力する。'(Outstream,_添え字番号,_データ),
        close(Outstream).

'ディスプレイに一覧表示するとともにファイルへも出力する。'(Outstream,_添え字番号,_データ) :-
        writef('%t: %t\n',[_添え字番号,_値]),
        writef(Outstream,'%t: %t\n',[_添え字番号,_データ]),
        _添え字番号 = _データ数.


'データ列をバブルソートを用いて昇順に整列し、結果の整列したデータ列をディスプレイ表示するとともに、別のファイルへ出力する。'(_別の出力ファイル名,_データ数,_データならび,_昇順に整列したならび) :-
        'データ列をバブルソートを用いて昇順に整列し'(_データならび,_昇順に整列したデータならび),
        '結果の整列したデータ列をディスプレイ表示するとともに、別のファイルへ出力する。'(_別の出力ファイル名,_昇順に整列したデータならび).

'データ列をバブルソートを用いて昇順に整列し'(_データならび,_昇順に整列したデータならび) :-
        バブルソート(_データならび,_昇順に整列したデータならび).

'結果の整列したデータ列をディスプレイ表示するとともに、別のファイルへ出力する。'(_別の出力ファイル名,_昇順に整列したデータならび) :-
        open(_別のファイル名,write,Outstream),
        append(L0,[_データ|R],_昇順に整列したデータならび),
        writef('%t\n',[_データ]),
        writef(Outstream,'%t\n',[_データ]),
        R = [],
        close(Outstream).