このディレクトリの索引
#  出典:: http://toro.2ch.net/test/read.cgi/tech/1392388003/270
#  [1] 授業単元:プログラミング基礎 
#  [2] 問題文(含コード&リンク):入力した1桁の整数を行数と解釈し、その後、その行数分だけキーボードから入力された 
#  文字をディスプレイに出力する。 
#  [条件1]整数(行数)入力にはgetchar関数を使用する。 
#  [条件2]行数入力後の文字入出力にはgetchar関数とputchar関数を使用する。 
#  [条件3]入力された整数(行数)が、不正(整数でないまたは2桁以上の整数)の場合は、"Input error"と表示する。 
#  [3] 環境 
#   [3.1] OS:Windows7 
#   [3.2] コンパイラ名とバージョン:gcc 3.4 
#   [3.3] 言語: C 
#  [4] 期限:2014/03/30 

'入力した1桁の整数を行数と解釈し、その後、その行数分だけキーボードから入力された文字をディスプレイに出力する。
[条件1]整数(行数)入力にはgetchar関数を使用する。
[条件2]行数入力後の文字入出力にはgetchar関数とputchar関数を使用する。
[条件3]入力された整数(行数)が、不正(整数でないまたは2桁以上の整数)の場合は、"Input error"と表示する。' :-
        '入力した1桁の整数を行数と解釈し、
[条件1]整数(行数)入力にはgetchar関数を使用する。
[条件3]入力された整数(行数)が、不正(整数でないまたは2桁以上の整数)の場合は、"Input error"と表示する。'(_行数),
        'その後、',
        'その行数分だけキーボードから入力された文字をディスプレイに出力する。
[条件2]行数入力後の文字入出力にはgetchar関数とputchar関数を使用する。'(_行数),!.


'入力した1桁の整数を行数と解釈し、
[条件1]整数(行数)入力にはgetchar関数を使用する。
[条件3]入力された整数(行数)が、不正(整数でないまたは2桁以上の整数)の場合は、"Input error"と表示する。'(_行数) :-
        '入力した1桁の整数を
[条件1]整数(行数)入力にはgetchar関数を使用する。
[条件3]入力された整数(行数)が、不正(整数でないまたは2桁以上の整数)の場合は、"Input error"と表示する。'(_入力した1桁の整数),
        行数と解釈し(_入力した1桁の整数,_行数).

'入力した1桁の整数を
[条件1]整数(行数)入力にはgetchar関数を使用する。
[条件3]入力された整数(行数)が、不正(整数でないまたは2桁以上の整数)の場合は、"Input error"と表示する。'(_入力した1桁の整数) :-
        '入力した1桁の整数を
[条件1]整数(行数)入力にはgetchar関数を使用する。'(_入力した1桁の整数),!.
'入力した1桁の整数を
[条件1]整数(行数)入力にはgetchar関数を使用する。
[条件3]入力された整数(行数)が、不正(整数でないまたは2桁以上の整数)の場合は、"Input error"と表示する。'(_入力した1桁の整数) :-
        write('Input error 再入力をお願いします\n'),
        '入力した1桁の整数を
[条件1]整数(行数)入力にはgetchar関数を使用する。
[条件3]入力された整数(行数)が、不正(整数でないまたは2桁以上の整数)の場合は、"Input error"と表示する。'(_入力した1桁の整数).

'入力した1桁の整数を
[条件1]整数(行数)入力にはgetchar関数を使用する。'(_入力した1桁の整数) :-
        行入力(_行文字列),
        get_term_from_atom(_行文字列,_入力した1桁の整数,[]),
        integer(_入力した1桁の整数),
        number_chars(_入力した1桁の整数,[_]),!.

行数と解釈し(_入力した1桁の整数,_行数) :-
        _入力した1桁の整数 = _行数.

'その後、'.

'その行数分だけキーボードから入力された文字をディスプレイに出力する。
[条件2]行数入力後の文字入出力にはgetchar関数とputchar関数を使用する。'(_行数) :-
        reawmode,
        between(1,_行数,_行目),
        'キーボードから入力された文字をディスプレイに出力する。
[条件2]行数入力後の文字入出力にはgetchar関数とputchar関数を使用する。',
        _行目 = _行数,
        norawmode.

'キーボードから入力された文字をディスプレイに出力する。
[条件2]行数入力後の文字入出力にはgetchar関数とputchar関数を使用する。' :-
        repeat,
        get_char(_文字),
        put_char(_文字),
        _文字 = '\n',!.

行入力(_行文字列) :-
        get_char(_文字),
        行文字ならび(_文字,_行文字ならび),
        atom_chars(_行文字列,_行文字ならび).

行文字ならび(end_of_file,[]) :- !.
行文字ならび('\n',[]) :- !.
行文字ならび(_文字,[_文字|R]) :-
        get_char(_次の文字),
        行文字ならび(_次の文字,R).

rawmode :-
        shell('stty raw -echo',_).

norawmode :-
        shell('stty -raw echo',_).