このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1274827528/892
#  [1] 授業単元:オブジェクトプログラミング 
#  [2] 問題文(含コード&リンク):入力した文字列を文字型配列に代入し、アルファベットの大文字、 
#   
#  小文字、四則演算を回数分表示できるようにしなさい。尚、改行記号を\nとし、四則演算、アルファベット、 
#   
#  改行記号以外の文字を含む場合と、アルファベットまたは記号の後に数字が来ない場合、各々、エラーを表示するようにしなさい。 
#  


入力した文字列を文字型配列に代入し、アルファベットの大文字、小文字、四則演算を回数分表示 :-
        get_line(_文字列),
        atom_chars(_文字列,Chars),
        入力した文字列を文字型配列に代入し、アルファベットの大文字、小文字、四則演算を回数分表示(Chars).

入力した文字列を文字型配列に代入し、アルファベットの大文字、小文字、四則演算を回数分表示([]) :- !.
入力した文字列を文字型配列に代入し、アルファベットの大文字、小文字、四則演算を回数分表示([A|R]) :-
        アルファベットの大文字、小文字、四則演算記号、改行記号のどれか(A),
        数値を切り取る(R,L,R2),
        number_chars(M,L),
        for(1,N,M),write(A),M = N,
        入力した文字列を文字型配列に代入し、アルファベットの大文字、小文字、四則演算を回数分表示(R).
入力した文字列を文字型配列に代入し、アルファベットの大文字、小文字、四則演算を回数分表示(L1) :-
        入力エラーを切り取る(L1,L,R2),
        concat_atom(L,S),
        write_formatted('入力文字列エラー %t\n',[S]),
        入力した文字列を文字型配列に代入し、アルファベットの大文字、小文字、四則演算を回数分表示(R2).

数値を切り取る([],[],[]) :- !.
数値を切り取る([A|R1],[],[A|R1]) :-
        \+(member(A,['0','1','2','3','4','5','6','7','8','9'])),
        write('文字の繰返し数が得られませんでした\n'),!.
数値を切り取る([A|R1],[],[A|R1]) :-
        \+(member(A,['0','1','2','3','4','5','6','7','8','9'])),!.
数値を切り取る([A|R1],[A|R2],R) :-
        member(A,['0','1','2','3','4','5','6','7','8','9']),
        数値を切り取る(R1,R2,R),!.

入力エラーを切り取る([],[],[]) :- !.
入力エラーを切り取る([_文字|R1],[_文字],R1) :-
        アルファベットの大文字、小文字、四則演算記号、改行記号のどれか(_文字),!.
入力エラーを切り取る([A|R1],[A],R1) :-
        \+(アルファベットの大文字、小文字、四則演算記号、改行記号のどれか(_文字)),!.

アルファベットの大文字、小文字、四則演算記号、改行記号のどれか(_文字) :-
        _文字 @>= 'A',_文字 @< 'Z',!.
アルファベットの大文字、小文字、四則演算記号、改行記号のどれか(_文字) :-
        _文字 @>= 'a',_文字 @< 'z',!.
アルファベットの大文字、小文字、四則演算記号、改行記号のどれか(_文字) :-
        member(_文字,[+,-,*,/,'\n']),!.