このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1339338438/64
#  [1] 授業単元:配列  
#  [2] 問題文(含コード&リンク):身長(cm)と体重(kg)が、(170,85), (165,65), (180,78), 
#                  (195,80), (188,72)の学生がいる。このデータを配列変数に保存し,身長 
#                  を入力すると体重を検索するプログラムを作成せよ。  
#                  該当する身長の学生がいない場合は「みつかりません。」を表示し 
#                  繰り返しを終了せよ。 
#                  ここで,次のように配列宣言を行う。 
#                  int shincho[ ] = { 170, 165, 180, 195, 188, 0}; 
#                  int taiju[ ] =   {   85,   65,   78,   80,   72,  0}; 
#   
#  データの最後は,データの個数である 5 を用いず、身長データが0になった 
#  とき繰り返しを終了する方法を考えること。 
#  ヒント:for( i=0 ; shincho[i] != 0 ; i++)を使用する。 
#    
#  

'身長(cm)と体重(kg)が、(170,85),(165,65),(180,78),(195,80),(188,72)の学生がいる。このデータを配列数に保存し,身長を入力すると体重を検索する。該当する身長の学生がいない場合は「みつかりません。」を表示し繰り返しを終了せよ。' :-
        '身長(cm)と体重(kg)が、(170,85),(165,65),(180,78),(195,80),(188,72)の学生がいる。このデータを配列数に保存し'(_身長_体重ならび),
        '身長を入力すると体重を検索する。該当する身長の学生がいない場合は「みつかりません。」を表示し繰り返しを終了せよ。'(_身長_体重ならび).

'身長(cm)と体重(kg)が、(170,85),(165,65),(180,78),(195,80),(188,72)の学生がいる。このデータを配列数に保存し'(_身長_体重ならび) :-
        length(_身長_体重ならび,5),
        findall([_身長,_体重],(
                    append(Ln,[_|_],_身長_体重ならび),
                    身長と体重の入力(Ln,_身長,_体重)),
                _身長体重ならび).        

身長と体重の入力(Ln,_身長,_体重) :-
         length([_|Ln],N人目),
         writef('%t人目の 身長 : ',[N人目]),
         get_integer(_身長),
         write(' 体重 : '),
         get_integer(_体重).

'身長を入力すると体重を検索する。該当する身長の学生がいない場合は「みつかりません。」を表示し繰り返しを終了せよ。'(_身長_体重ならび) :-
        '身長を入力すると'(_身長),
        '体重を検索する'(_身長_体重ならび,_身長,_体重),
        writef('身長 %t の人の 体重は %t です。\n',[_身長,_体重]),
        '身長を入力すると体重を検索する。該当する身長の学生がいない場合は「みつかりません。」を表示し繰り返しを終了せよ。'(_身長_体重ならび).
'身長を入力すると体重を検索する。該当する身長の学生がいない場合は「みつかりません。」を表示し繰り返しを終了せよ。'(_身長_体重ならび) :-
        writef('見つかりません\n').

'身長を入力すると'(_身長) :-
        write('身長を入力してください : '),
        get_line(Line),
        '診断: 身長を入力すると'(Line,_身長),!.
'身長を入力すると'(_身長) :-
        '身長を入力すると'(_身長).

'診断: 身長を入力すると'(Line,_身長) :-
        atom_to_term(Line,_身長,_),
        integer(_身長),!.
'診断: 身長を入力すると'(Line,_身長) :-
        writef('入力された %t から整数が得られません。再入力をお願いします。\n',[Line]),
        fail.

'体重を検索する'(_身長_体重ならび,_身長,_体重) :-
        member([_身長,_体重],_身長_体重ならび).