このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1280653311/72
#  C言語の問題なのですが  
#   
#  4ケタの番号,名前,名前(フリガナ),都道府県,住所,電話番号  
#   
#  といった300人分の名簿データみたいなcsvファイルがあり  
#  それをで4ケタの番号どうりに単純ソートで昇順に表示して  
#  番号を入力すると2分探索で探索を開始し  
#  正しい番号を入力すると電話番号を、不正な番号を入力すると  
#  エラー表示が出るプログラムを作成したいのですがわからず困ってます  
#  どなたかよろしくお願いします  
#  (malloc関数は使わずにとの事です) 
# 
# 

'4ケタの番号,名前,名前(フリガナ),都道府県,住所,電話番号といった300人分のcsvファイルがあり、番号を入力すると2分探索で探索を開始し正しい番号を入力すると電話番号を不正な番号を入力するとエラー表示する'(_csvファイル) :-
        write('検索する4ケタの番号を入力してください : '),
        get_integer(N),
        get_split_lines(_csvファイル,[','],L1),
        '4ケタの番号どうりに単純ソートで昇順にならべる'(L1,L2),
        lenth(L2,Len),
        M is Len // 2,
        list_nth(M,L2,L),
        2分探索で探索(1,M,Len,L2,N,L,X),
        write_formatted('%t,%t,%t,%t,%t,%t\n',X).

'4ケタの番号,名前,名前(フリガナ),都道府県,住所,電話番号といった300人分のcsvファイルがあり、それを4ケタの番号どうりに単純ソートで昇順に表示'(_csvファイル) :-
        get_split_lines(_csvファイル,L1),
        '4ケタの番号どうりに単純ソートで昇順にならべる'(L1,L2),
        '4ケタの番号どうりに表示'(L2).

'4ケタの番号どうりに単純ソートで昇順にならべる'(L1,L2) :-
        sort(L1,L2),!.
        
'4ケタの番号どうりに表示'([]) :- !.
'4ケタの番号どうりに表示'([L|R]) :-
        concat_atom(L,',',A),
        write_formatted('%t\n',[A]),
        '4ケタの番号どうりに表示'(R).

2分探索で探索(_,_,_,_,N,[N|R],[N|R]) :- !.
2分探索で探索(S,M,E,L2,N,[N1|R1],X) :-
        N1 < N,
        M2 is (S+M) // 2,
        list_nth(M2,L2,L1),
        2分探索で探索(S,M2,M,L2,N,L1,X),!.
2分探索で探索(S,M,E,L2,N,[N1|R1],X) :-
        N1 > N,
        M2 is (M+E) // 2,
        list_nth(M2,L2,L1),
        2分探索で探索(M,M2,E,L2,N,L1,X),!.