このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1357748713/186
#  [1] 授業単元: プログラミングB 
#  [2] 問題文(含コード&リンク):入力された文字列を2進数の文字列として 
#                解釈し、10進数に変換し画面出力しなさい。 
#                入力にはライブラリ関数putcharを使用すること。 
#                Enterキーのみが押された場合、エラーを表示し、再入力する。 
#                0,1以外の文字が入力された場合、エラーを表示し、再入力する。   
#  
#  [3] 環境 
#   [3.1] OS:Windows7 
#   [3.2] コンパイラ名とバージョン: Borland C++ 5.5.1 
#   [3.3] 言語:C言語 
#  [4] 期限: 2013/01/23

'入力された文字列を2進数の文字列として解釈し、10進数に変換し画面出力しなさい。
入力にはライブラリ関数putcharを使用すること。 
Enterキーのみが押された場合、エラーを表示し、再入力する。
0,1以外の文字が入力された場合、エラーを表示し、再入力する。' :-
        '入力された文字列を(Enterキーのみが押された場合、エラーを表示し、再入力する。0,1以外の文字が入力された場合、エラーを表示し、再入力する。)' (_入力された文字列),
        '2進数の文字列として解釈し、10進数に変換し'(_入力された文字列,_10進数),
        画面に出力する(_入力された文字列,_10進数).

'入力された文字列を(Enterキーのみが押された場合、エラーを表示し、再入力する。0,1以外の文字が入力された場合、エラーを表示し、再入力する。)'(_入力された文字列) :-
        write('2進数文字列を入力してください : '),
        get_line(_入力された文字列),
        '診断 :: 入力された文字列を'(_入力された文字列),!.
'入力された文字列を(Enterキーのみが押された場合、エラーを表示し、再入力する。0,1以外の文字が入力された場合、エラーを表示し、再入力する。)'(_入力された文字列) :-
        '入力された文字列を(Enterキーのみが押された場合、エラーを表示し、再入力する。0,1以外の文字が入力された場合、エラーを表示し、再入力する。)'(_入力された文字列).

'診断 :: 入力された文字列を'('') :-
        'Enterキーのみが押された場合、エラーを表示し、再入力する。',!,fail.
'診断 :: 入力された文字列を'(_入力された文字列) :-
        '0,1以外の文字が入力された場合、エラーを表示し、再入力する。'(_入力された文字列),
        !,fail.
'診断 :: 入力された文字列を'(_).

'Enterキーのみが押された場合、エラーを表示し、再入力する。' :-
        write('エラー :: 文字列が入力されていません\n').

'0,1以外の文字が入力された場合、エラーを表示し、再入力する。'(_入力された文字列) :-
        sub_atom(_入力された文字列,_,1,_,_文字),
        \+(_文字 = '0'),
        \+(_文字 = '1'),
        write('エラー :: 0,1以外の文字が入力されました\n'),
        !,fail.

'2進数の文字列として解釈し、10進数に変換し'(_入力された文字列,_10進数) :-
        atomic_list_concat(['0b',_入力された文字列],_2進数を表す文字列),
        atom_number(_2進数を表す文字列,_10進数).

画面に出力する(_入力された文字列,_10進数) :-
        writef('入力された文字列: %t 変換された10進数: %t\n',[_入力された文字列,_10進数]).