このディレクトリの索引
#  出題場所 :: http://toro.2ch.net/test/read.cgi/tech/1381909900/837
#  [2] 配列の大きさ6で、それを超えると受け取れないようにする。また負の数を入力した場合、入力処理を中断する。 
#  

'ならびの要素数6で、それを超えると受け取れないようにする。また負の数を入力した場合、入力処理を中断する。'(_ならび) :-
        'ならびの要素数6で、'(_ならび),
        'それを超えると受け取れないようにする。また負の数を入力した場合、入力処理を中断する。'(_ならび).

'それを超えると受け取れないようにする。また負の数を入力した場合、入力処理を中断する。'(_ならび) :-
        'それを超えると受け取れないようにする。'(_ならび),!.
'それを超えると受け取れないようにする。また負の数を入力した場合、入力処理を中断する。'([_正の整数|R]) :-
        '整数を得る。負の数を入力した場合、入力処理を中断する。'(正の整数,_正の整数 >= 0,_正の整数),
        'それを超えると受け取れないようにする。また負の数を入力した場合、入力処理を中断する。'(R).

'それを超えると受け取れないようにする。'([]).

'整数を得る。負の数を入力した場合、入力処理を中断する。'(_正の整数) :-
        整数を得る(_整数),
        '負の数を入力した場合、入力処理を中断する。'(_整数,_正の整数).

整数を得る(_整数) :-
        get_line(Line),
        '診断: 整数入力'(Line,_整数).
整数を得る(_整数) :-
        整数を得る(_整数).

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

'負の数を入力した場合、入力処理を中断する。'(_整数,_正の整数) :-
        _整数 < 0,
        writef('入力された整数"%t"は正の整数ではありませんから\n入力と見なされません。\n',[_整数]),
        !,
        fail.
'負の数を入力した場合、入力処理を中断する。'(_正の整数,_正の整数).

一行読み込む(_行) :-
        get_line(_行).

get_line(Stream,X) :-
        get_char(Stream,C),
        get_line_1(Stream,C,Chars),
        atom_chars(X,Chars).

get_line_1(Stream,'\n',[]) :- !.
get_line_1(Stream,end_of_file,[e,n,d,'_',o,f,'_',f,i,l,e]) :- !.
get_line_1(Stream,C,[C|R]) :-
        get_char(Stream,C2),
        get_line_1(Stream,C2,R).


get_line(X) :-
        get_char(C),
        get_line_1(C,Chars),
        atom_chars(X,Chars).

get_line_1('\n',[]) :- !.
get_line_1(end_of_file,[e,n,d,'_',o,f,'_',f,i,l,e]) :- !.
get_line_1(C,[C|R]) :-
        get_char(C2),
        get_line_1(C2,R).