このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1354070278/392
#  (1)C言語 
#  (2)問題:キーボードから正の整数を入力するとその桁数を表示するプログラムを作成せよ。 
#  (3)windows7 visual studio2010 
#  (4)期限:12月20日 
#  (5)よろしくお願いします。 
# 
# 

'キーボードから正の整数を入力するとその桁数を表示する' :-
        'キーボードから正の整数を入力すると'(_正の整数),
        'その桁数を表示する'(_正の整数).

'キーボードから正の整数を入力すると'(_正の整数) :-
        整数を得る(正の整数,_正の整数 > 0,_正の整数).

'その桁数を表示する'(_正の整数) :-
        number_chars(_正の整数,Chars),
        length(Chars,_その桁数),
        writef('%t桁です\n',[_その桁数]).



整数を得る(_催促文,_整数を含む条件,_整数) :-
        整数を得る(user_input,_催促文,_整数を含む条件,_整数).

整数を得る(Instream,_催促文ならび,_整数を含む条件,_整数ならび) :-
        list(_催促文ならび),
        findall(_整数,(
                    member(_催促文,_催促文ならび),
                    整数を得る(Instream,_催促文,_整数を含む条件,_整数)),
                _整数ならび),!.
整数を得る(Instream,_催促文,_整数を含む条件,_整数) :-
        催促文の出力(_催促文),
        get_line(Instream,Line),
        '診断: 整数を得る'(Line,_整数を含む条件,_整数),!.
整数を得る(Instream,_催促文,_整数を含む条件,_整数) :-
        整数を得る(Instream,_催促文,_整数を含む条件,_整数).

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

'診断: 整数を得る'(end_of_file,end_of_file) :- !.
'診断: 整数を得る'('',_) :- !,fail.
'診断: 整数を含む条件'(_整数,_整数を含む条件) :-
        call(_整数を含む条件),!.
'診断: 整数を含む条件'(_整数,_整数を含む条件) :-
        writef('入力された %t は %t が偽となります。\n',[_整数,_整数を含む条件]),
        fail.

get_line(Line) :-
        read_line_to_codes(user_input,Codes),
        atom_codes(Line,Codes).