アルゴリズム基礎及び演習レポート：挿入法の実践

アルゴリズム基礎及び演習レポート

挿入法の実践

7JFC1121 佐藤圭一

PAGE:1
7JFC1121 佐藤圭一

アルゴリズム基礎及び演習レポート：挿入法の実践【目次】
3§１：プログラムの構成

4§２：プログラムソースコード・データファイル

46
10
10
11

§２．１
§２．２
§２．３
§２．４
§２．５

12

§３：プログラム実行結果

121212§３．１§３．１．２§３．１．３

13
13
13
14
14
15
15

§３．２：ソート結果§３．２．１：学生章番号・昇順§３．２．２：学生章番号・降順§３．２．３：数学・昇順§３．２．４：数学・降順§３．２．５：英語・昇順§３．２．６：英語・降順：KADAI̲1.PAS：KADAI̲11.PAS：SEI̲C.BAT：AUTOLOG.BAT：SEISEKI.TXT：各プログラムの画面出力：AUTOLOG.BAT：KADAI̲11.PAS(一例)PAGE:2
7JFC1121 佐藤圭一

アルゴリズム基礎及び演習レポート：挿入法の実践§１：プログラムの構成
処理の簡略化を実現する為、PASCAL プログラム、及び MS-DOS バッチファ
イルを併用した。
以下に、各プログラムの概要を示す。
KADAI̲1.PAS
KADAI̲11.PAS
SEI̲C.BAT
AUTOLOG.BAT:標準入力より、シーケンシャルファイルを生成:ソートプログラム本体:成績ファイル変換バッチファイル:ソート結果 LOG 取りバッチファイル

また、いくつかのデータファイルを使用している。
以下に、各データファイルの内容及び目的を示す。
SEISEKI.TXT

AUTOLOG.DATAUTOLOG.LOG:成績テキストファイル。
先頭に生成されるシーケンシャルファイル名を、次行より数学、英語の順に成績を記入していく。
最後は「0 0」とする。
:AUTOLOG.BAT に使用される一時ファイル
KADAI̲11 に処理を渡すのに利用される:AUTOLOG.BAT にて生成されるログファイル
KADAI̲11 の応答がテキストファイルにて羅列されている。

PAGE:3
7JFC1121 佐藤圭一

アルゴリズム基礎及び演習レポート：挿入法の実践§２：プログラムソースコード・データファイル§２．１：KADAI̲1.PAS
Kadai_1.pas
program input_file;{7JFC1121 佐藤圭一 19 才、もうすぐ 20 才}{変数の宣言}type item = record
id: integer;

math: integer;

english : integer;end;
var wfile: file of item;

data: item;flag: integer;

id_no: integer;

filename: string[12];{めいんるぅちん}begin{ファイル名取得}
writeln('＊＊＊成績ファイル生成プログラム＊＊＊');
writeln('Created By eucalyptus. 1998');
writeln('酷い事に、パイプ処理でテキストを流し込む事を前提としております。');
write('ファイル名を取得しています');readln(filename);{ファイルをアサイン}
assign(wfile,filename);
rewrite(wfile);{入力}
writeln('入力作業を開始します。');
flag := 1;
id_no := 1000;with data dowhile flag <> 0 do
begin
id_no := id_no + 1;
write('*');
id := id_no;read(math,english);flag := math + english;
if (flag <> 0) thenbegin

PAGE:4
7JFC1121 佐藤圭一

アルゴリズム基礎及び演習レポート：挿入法の実践

write(wfile,data)
endend;close(wfile);
writeln('入力作業を終了しました。');
end.

PAGE:5
7JFC1121 佐藤圭一

アルゴリズム基礎及び演習レポート：挿入法の実践§２．２：KADAI̲11.PASkadai_11.pas
program kadai_11; {7JFC1121 佐藤圭一 疲れ気味}{変数の宣言}type item= record
id: integer;

math: integer;

english : integerend;type ar_int = array[0..51,0..2] of integer;var

readfile: file of item ;data: itemfilename: string[12]o_data: ar_int

temp,flag,flag2,i,j,k,w,x,y,z : integer

;
;
;

;

{ソート手続き}procedure sort_ins(var o_data: ar_int;

flag,i,j,k,w,x,y,z : integer);begin
for i := 2 to 50 do
begin
x := o_data[i,0];
y := o_data[i,1];z := o_data[i,2];w := o_data[i,flag];o_data[0,flag] := w;
j := i - 1;
while w < o_data[j,flag] do
begin
o_data[j+1,0] := o_data[j,0];o_data[j+1,1] := o_data[j,1];o_data[j+1,2] := o_data[j,2];
j := j-1
end;o_data[j+1,0] := x;o_data[j+1,1] := y;o_data[j+1,2] := z;o_data[j+1,flag] := w;
end
end;

{逆ソート手続き}
procedure sort_ins_rev(var o_data: ar_int;

PAGE:6
7JFC1121 佐藤圭一

アルゴリズム基礎及び演習レポート：挿入法の実践

flag,i,j,k,w,x,y,z : integer);begin
for i := 49 downto 1 do
begin
x := o_data[i,0];
y := o_data[i,1];z := o_data[i,2];w := o_data[i,flag];o_data[51,flag] := w;
j := i + 1;
while w < o_data[j,flag] do
begin
o_data[j-1,0] := o_data[j,0];o_data[j-1,1] := o_data[j,1];o_data[j-1,2] := o_data[j,2];
j := j+1
end;
o_data[j-1,0] := x;o_data[j-1,1] := y;o_data[j-1,2] := z;o_data[j-1,flag] := w;end
end;{メインルーチン}
begin{データファイルの名前を取得}
writeln('＊＊＊挿入法の実践プログラム＊＊＊');
writeln('Created By eucalyptus. 1998');
write('データファイル名を入力して下さい:');readln (filename);{ファイルをアサイン}
assign(readfile,filename);
reset(readfile);{ファイル内容を配列に代入}
with data dofor temp := 1 to 50 do
begin
read(readfile,data);

PAGE:7
7JFC1121 佐藤圭一

アルゴリズム基礎及び演習レポート：挿入法の実践

o_data[temp,0] := id;
o_data[temp,1] := math;o_data[temp,2] := english
end;{ファイルのクローズ}
close(readfile);{処理の選択}writeln('ファイルの読み込み完了。処理を選択して下さい。');
write('[0:学番でソート(笑) 1:数学でソート 2:英語でソート]:');
readln(flag);write('[1:昇順 2:降順]:');
readln(flag2);{手続き呼出し}if flag2 = 1 thenbegin
sort_ins(o_data,flag,i,j,k,w,x,y,z)
end;
if flag2 = 2 thenbegin
sort_ins_rev(o_data,flag,i,j,k,w,x,y,z)
end;{処理結果出力}
writeln('＊＊＊処理結果＊＊＊');
write('[ ',filename,' ]の内容を、');
if flag = 0 thenwrite('学生証番号');
if flag = 1 thenwrite('数学');
if flag = 2 thenwrite('英語');
write('順に');
if flag2 = 1 thenwrite('昇順');
if flag2 = 2 thenwrite('降順');
writeln('ソートしました。');
writeln('ID:学生証番号 MT:数学 EN:英語');
writeln('1..10______11..20_____21..30_____31..40_____41..50____');
writeln('IDMT EN ID

MT EN IDMT EN IDMT EN IDMT EN');for temp := 1 to 10 do
begin
i := temp + 10;

PAGE:8
7JFC1121 佐藤圭一

アルゴリズム基礎及び演習レポート：挿入法の実践

j := temp + 20;
k := temp + 30;
w := temp + 40;
write(o_data[temp,0],' ',o_data[temp,1],' ',o_data[temp,2],' ');write(o_data[i,0],' ',o_data[i,1],' ',o_data[i,2],' ');write(o_data[j,0],' ',o_data[j,1],' ',o_data[j,2],' ');write(o_data[k,0],' ',o_data[k,1],' ',o_data[k,2],' ');writeln(o_data[w,0],' ',o_data[w,1],' ',o_data[w,2],' ')
end
end.

PAGE:97JFC1121 佐藤圭一

アルゴリズム基礎及び演習レポート：挿入法の実践§２．３：SEI̲C.BAT
kadai_1.exe <seiseki.txt§２．４：AUTOLOG.BAT@echo off
del autolog.log
echo 開始
echo seiseki.dat> autolog.dat
echo 0>> autolog.dat
echo 1>> autolog.dat
echo *******************************************************************************>>autolog.log
kadai_11 <autolog.dat >autolog.log
echo seiseki.dat> autolog.dat
echo 0>> autolog.dat
echo 2>> autolog.dat
echo *******************************************************************************>>autolog.log
kadai_11 <autolog.dat >>autolog.log
echo seiseki.dat> autolog.dat
echo 1>> autolog.dat
echo 1>> autolog.dat
echo *******************************************************************************>>autolog.log
kadai_11 <autolog.dat >>autolog.log
echo seiseki.dat> autolog.dat
echo 1>> autolog.dat
echo 2>> autolog.dat
echo *******************************************************************************>>autolog.log
kadai_11 <autolog.dat >>autolog.log
echo seiseki.dat> autolog.dat
echo 2>> autolog.dat
echo 1>> autolog.dat
echo *******************************************************************************>>autolog.log
kadai_11 <autolog.dat >>autolog.log
echo seiseki.dat> autolog.dat
echo 2>> autolog.dat
echo 2>> autolog.dat
kadai_11 <autolog.dat >>autolog.log
echo *******************************************************************************>>autolog.log
kadai_11 <autolog.dat >>autolog.log
echo 完了

PAGE:10
7JFC1121 佐藤圭一

アルゴリズム基礎及び演習レポート：挿入法の実践§２．５：SEISEKI.TXT
seiseki.dat
32 60
32 29
32 59
60 57
76 58
24 53
64 81
60 80
72 60
84 88
68 74
64 69
64 53
64 67
56 81
76 81
40 28
68 68
76 67
64 61
84 54
80 81
64 86
60 64
44 69
16 39
64 79
72 71
64 50
68 79
16 49
68 73
68 83
68 88
60 68
88 79
20 51
32 4280 76
52 4456 79
44 50
56 82
44 51
80 67
12 39
40 32
64 74
56 71
80 9200

PAGE:11
7JFC1121 佐藤圭一

アルゴリズム基礎及び演習レポート：挿入法の実践§３：プログラム実行結果§３．１：各プログラムの画面出力§３．１．１：SEI̲C.BAT＊＊＊成績ファイル生成プログラム＊＊＊
Created By eucalyptus. 1998

酷い事に、パイプ処理でテキストを流し込む事を前提としております。
ファイル名を取得しています入力作業を開始します。
***************************************************入力作業を終了しました。

§３．１．２：AUTOLOG.BAT
開始
完了§３．１．３：KADAI̲11.PAS(一例)＊＊＊挿入法の実践プログラム＊＊＊
Created By eucalyptus. 1998

データファイル名を入力して下さい:seiseki.dat
ファイルの読み込み完了。処理を選択して下さい。
[0:学番でソート(笑) 1:数学でソート 2:英語でソート]:1[1:昇順 2:降順]:1＊＊＊処理結果＊＊＊[ seiseki.dat ]の内容を、数学順に昇順ソートしました。
ID:学生証番号 MT:数学 EN:英語
1..10______11..20_____21..30_____31..40_____41..50____ID

MT EN IDMT EN IDMT EN IDMT EN ID

MT EN

1046 12 39 1047 40 32 1008 60 80 1029 64 50 1005 76 58
1026 16 39 1025 44 69 1024 60 64 1048 64 74 1016 76 81
1031 16 49 1042 44 50 1035 60 68 1011 68 74 1019 76 67
1037 20 51 1044 44 51 1007 64 81 1018 68 68 1022 80 81
1006 24 53 1040 52 44 1012 64 69 1030 68 79 1039 80 761001 32 60 1015 56 81 1013 64 53 1032 68 73 1045 80 67
1002 32 29 1041 56 79 1014 64 67 1033 68 83 1050 80 921003 32 59 1043 56 82 1020 64 61 1034 68 88 1010 84 881038 32 42 1049 56 71 1023 64 86 1009 72 60 1021 84 541017 40 28 1004 60 57 1027 64 79 1028 72 71 1036 88 79

PAGE:127JFC1121 佐藤圭一

アルゴリズム基礎及び演習レポート：挿入法の実践§３．２：ソート結果§３．２．１：学生章番号・昇順[ seiseki.dat ]の内容を、学生証番号順に昇順ソートしました。
ID:学生証番号 MT:数学 EN:英語
1..10̲̲̲̲̲̲11..20̲̲̲̲̲21..30̲̲̲̲̲31..40̲̲̲̲̲41..50̲̲̲̲IDMT EN ID
MT EN ID MT EN ID
MT EN IDMT EN1001 32 60 1011 68 74 1021 84 54 1031 16 49 1041 56 79
1002 32 29 1012 64 69 1022 80 81 1032 68 73 1042 44 50
1003 32 59 1013 64 53 1023 64 86 1033 68 83 1043 56 821004 60 57 1014 64 67 1024 60 64 1034 68 88 1044 44 51
1005 76 58 1015 56 81 1025 44 69 1035 60 68 1045 80 67
1006 24 53 1016 76 81 1026 16 39 1036 88 79 1046 12 391007 64 81 1017 40 28 1027 64 79 1037 20 51 1047 40 321008 60 80 1018 68 68 1028 72 71 1038 32 42 1048 64 741009 72 60 1019 76 67 1029 64 50 1039 80 76 1049 56 711010 84 88 1020 64 61 1030 68 79 1040 52 44 1050 80 92§３．２．２：学生章番号・降順[ seiseki.dat ]の内容を、学生証番号順に降順ソートしました。
ID:学生証番号 MT:数学 EN:英語
1..10̲̲̲̲̲̲11..20̲̲̲̲̲21..30̲̲̲̲̲31..40̲̲̲̲̲41..50̲̲̲̲ID
MT EN IDMT EN ID MT EN ID
MT EN IDMT EN1050 80 92 1040 52 44 1030 68 79 1020 64 61 1010 84 88
1049 56 71 1039 80 76 1029 64 50 1019 76 67 1009 72 601048 64 74 1038 32 42 1028 72 71 1018 68 68 1008 60 80
1047 40 32 1037 20 51 1027 64 79 1017 40 28 1007 64 81
1046 12 39 1036 88 79 1026 16 39 1016 76 81 1006 24 531045 80 67 1035 60 68 1025 44 69 1015 56 81 1005 76 58
1044 44 51 1034 68 88 1024 60 64 1014 64 67 1004 60 571043 56 82 1033 68 83 1023 64 86 1013 64 53 1003 32 591042 44 50 1032 68 73 1022 80 81 1012 64 69 1002 32 291041 56 79 1031 16 49 1021 84 54 1011 68 74 1001 32 60

PAGE:137JFC1121 佐藤圭一

アルゴリズム基礎及び演習レポート：挿入法の実践§３．２．３：数学・昇順[ seiseki.dat ]の内容を、数学順に昇順ソートしました。
ID:学生証番号 MT:数学 EN:英語
1..10̲̲̲̲̲̲11..20̲̲̲̲̲21..30̲̲̲̲̲31..40̲̲̲̲̲41..50̲̲̲̲
IDMT EN ID
MT EN ID MT EN IDMT EN IDMT EN1046 12 39 1047 40 32 1008 60 80 1029 64 50 1005 76 581026 16 39 1025 44 69 1024 60 64 1048 64 74 1016 76 811031 16 49 1042 44 50 1035 60 68 1011 68 74 1019 76 671037 20 51 1044 44 51 1007 64 81 1018 68 68 1022 80 811006 24 53 1040 52 44 1012 64 69 1030 68 79 1039 80 76
1001 32 60 1015 56 81 1013 64 53 1032 68 73 1045 80 67
1002 32 29 1041 56 79 1014 64 67 1033 68 83 1050 80 921003 32 59 1043 56 82 1020 64 61 1034 68 88 1010 84 881038 32 42 1049 56 71 1023 64 86 1009 72 60 1021 84 541017 40 28 1004 60 57 1027 64 79 1028 72 71 1036 88 79§３．２．４：数学・降順[ seiseki.dat ]の内容を、数学順に降順ソートしました。
ID:学生証番号 MT:数学 EN:英語
1..10̲̲̲̲̲̲11..20̲̲̲̲̲21..30̲̲̲̲̲31..40̲̲̲̲̲41..50̲̲̲̲ID
MT EN IDMT EN ID MT EN ID
MT EN IDMT EN1036 88 79 1009 72 60 1013 64 53 1035 60 68 1047 40 321010 84 88 1028 72 71 1014 64 67 1015 56 81 1001 32 601021 84 54 1011 68 74 1020 64 61 1041 56 79 1002 32 291022 80 81 1018 68 68 1023 64 86 1043 56 82 1003 32 591039 80 76 1030 68 79 1027 64 79 1049 56 71 1038 32 421045 80 67 1032 68 73 1029 64 50 1040 52 44 1006 24 531050 80 92 1033 68 83 1048 64 74 1025 44 69 1037 20 51
1005 76 58 1034 68 88 1004 60 57 1042 44 50 1026 16 39
1016 76 81 1007 64 81 1008 60 80 1044 44 51 1031 16 49
1019 76 67 1012 64 69 1024 60 64 1017 40 28 1046 12 39

PAGE:147JFC1121 佐藤圭一

アルゴリズム基礎及び演習レポート：挿入法の実践§３．２．５：英語・昇順[ seiseki.dat ]の内容を、英語順に昇順ソートしました。
ID:学生証番号 MT:数学 EN:英語
1..10̲̲̲̲̲̲11..20̲̲̲̲̲21..30̲̲̲̲̲31..40̲̲̲̲̲41..50̲̲̲̲
IDMT EN ID
MT EN ID MT EN ID
MT EN IDMT EN
1017 40 28 1037 20 51 1020 64 61 1049 56 71 1007 64 811002 32 29 1044 44 51 1024 60 64 1032 68 73 1015 56 811047 40 32 1006 24 53 1014 64 67 1011 68 74 1016 76 81
1026 16 39 1013 64 53 1019 76 67 1048 64 74 1022 80 81
1046 12 39 1021 84 54 1045 80 67 1039 80 76 1043 56 821038 32 42 1004 60 57 1018 68 68 1027 64 79 1033 68 83
1040 52 44 1005 76 58 1035 60 68 1030 68 79 1023 64 861031 16 49 1003 32 59 1012 64 69 1036 88 79 1010 84 88
1029 64 50 1001 32 60 1025 44 69 1041 56 79 1034 68 881042 44 50 1009 72 60 1028 72 71 1008 60 80 1050 80 92§３．２．６：英語・降順[ seiseki.dat ]の内容を、英語順に降順ソートしました。
ID:学生証番号 MT:数学 EN:英語
1..10̲̲̲̲̲̲11..20̲̲̲̲̲21..30̲̲̲̲̲31..40̲̲̲̲̲41..50̲̲̲̲
IDMT EN ID
MT EN ID MT EN ID
MT EN IDMT EN1050 80 92 1008 60 80 1049 56 71 1001 32 60 1029 64 50
1010 84 88 1027 64 79 1012 64 69 1009 72 60 1042 44 50
1034 68 88 1030 68 79 1025 44 69 1003 32 59 1031 16 491023 64 86 1036 88 79 1018 68 68 1005 76 58 1040 52 441033 68 83 1041 56 79 1035 60 68 1004 60 57 1038 32 421043 56 82 1039 80 76 1014 64 67 1021 84 54 1026 16 391007 64 81 1011 68 74 1019 76 67 1006 24 53 1046 12 391015 56 81 1048 64 74 1045 80 67 1013 64 53 1047 40 321016 76 81 1032 68 73 1024 60 64 1037 20 51 1002 32 291022 80 81 1028 72 71 1020 64 61 1044 44 51 1017 40 28

PAGE:157JFC1121 佐藤圭一