このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1325685876/122
#  [1] 授業単元:計算機アルゴリズム  
#  [2] 問題文(含コード&リンク):  
#  ttp://www.dotup.org/uploda/www.dotup.org2496567.txt.html 
#   
#  設問1-1
#  プログラミング実習の出席回数と試験結果をそれぞれ別々のファイルに記録するプログラムを作成し、
#  10人分の適当なデータをキーボードから入力して実行しなさい。
#  プログラムとしてはn(>0)人分のデータを記録できるように作成し、変数nの値はキーボードから入力できるようにしなさい。
#  ただし、データはキーボードから入力しファイルに書き込むこととする。
#  それぞれのファイルには、出席番号、前期の結果、後期の結果を次のように記録するものとする。
#  
#  出席の記録
#  ファイル名:Class_Participation.txt
#  
#  1,  12,   5
#  2,  10,  12
#  3,  11,  15
#  4,   4,  15
#  5,   8,  14
#  
#  …, …,  …
#  
#  試験の記録
#  ファイル名:Exams.txt
#  
#  1,  88,  90
#  2,  96,  75
#  3,  40,  80
#  4,  40,  75
#  5,  90,  90
#  
#  …, …,  …
#  
#  設問1-2
#  設問1-1のデータについて、成績は、((前期出席回数+後期出席回数)+(前期試験点数+後期試験点数))/2で評価するものとし、
#  設問1-1で作成したファイルからデータを読み込み、成績を計算表示するプログラムを作成し、実行してみなさい。
#  

'プログラミング実習の出席回数と試験結果をそれぞれ別々のファイルに記録するプログラムを作成し、10人分の適当なデータをキーボードから入力して実行しなさい' :-
        'n人分の適当なデータをキーボードから入力'(10,_n人分のデータ),
        'プログラミング実習の出席回数と試験結果をそれぞれ別々のファイルに記録する'(_n人分のデータ).

'n人分の適当なデータをキーボードから入力'(_n人,_n人分のデータ) :-
        length(_n人分のデータ,_n人),
        findall(_データ,(
                    append(Ln,[_データ|_],_n人分のデータ),
                    データ入力([_|Ln],_データ)),
                _n人分のデータ).

データ入力(Ln,[_学生番号,_前期出席数,_後期出席数,_前期成績,_後期成績]) :-
        length(Ln,_何番目),
        writef('第%t番目の 学生番号,前期出席数,後期出席数,前期成績,後期成績(5項目)をカンマ区切りで入力してください : ',[_何番目]),
        readln([_学生番号,_前期出席数,_後期出席数,_前期成績,_後期成績]),!.
データ入力(Ln,_データ) :-
        write('もう一度入力しなおして下さい\n'),
        データ入力(Ln,_データ).

'プログラミング実習の出席回数と試験結果をそれぞれ別々のファイルに記録する'(_n人分のデータ) :-
        'プログラミング実習の出席回数をファイルClass_Participation.txtに書きだす'(_n人分のデータ),
        'プログラミング実習の試験結果をファイルExams.txtに書きだす'(_n人分のデータ).

'プログラミング実習の出席回数をファイルClass_Participation.txtに書きだす'(_n人分のデータ) :-
        open('Class_Participation.txt',write,Outstream),
        append(_,[[_学生番号,_前期出席数,_後期出席数,_,_]|R],_n人分のデータ),
        writef(Outstream,'%t,%t,%t\n',[_学生番号,_前期出席数,_後期出席数]),
        R = [],
        close(Outstream).

'プログラミング実習の出席回数をファイルExams.txtに書きだす'(_n人分のデータ) :-
        open('Exams.txt',write,Outstream),
        append(_,[[_学生番号,_,_,_前期成績,_後期成績]|R],_n人分のデータ),
        writef(Outstream,'%t,%t,%t\n',[_学生番号,_前期成績,_後期成績]),
        R = [],
        close(Outstream).