このディレクトリの索引
#  [1] 授業単元:情報処理 
#  [2] 問題文(含コード&リンク):キーボードから,「A」,「B」,「C」,「D」,「K」の5 種類のアルファベットを入力し,それぞれの入 
#  力個数を数えて画面出力するプログラムを作成しなさい.なお,「Z」が入力されるまでキーボ 
#  ード入力を繰り返すこととし,これら6 文字以外の入力はカウントしないようにしておくこと. 
#  [3] 環境 
#   [3.1] OS:Linux 
#   [3.2] コンパイラ名とバージョン:gcc 
#   [3.3] 言語:C 
#  [4] 期限: 明後日まで 
#  [5] その他の制限: なし 
#  よろしくお願いします。
#  

'キーボードから,「A」,「B」,「C」,「D」,「K」の5 種類のアルファベットを
入力し,それぞれの入力個数を数えて画面出力する.
なお,「Z」が入力されるまでキーボード入力を繰り返すこととし,
これら6 文字以外の入力はカウントしないようにしておくこと.' :-
        rawmode,
        'キーボードから,「A」,「B」,「C」,「D」,「K」の5 種類のアルファベットを入力し、「Z」が入力されるまで繰り返す'(_アルファベットならび),
        norawmode,
        'それぞれの入力個数を数えて画面出力する.これら6 文字以外の入力はカウントしない'(_アルファベットならび).

'キーボードから,「A」,「B」,「C」,「D」,「K」の5 種類のアルファベットを入力し、「Z」が入力されるまで繰り返す'([_アルファベット|R]) :-
        get_char(_アルファベット),
        \+(_アルファベット = 'Z'),
        'キーボードから,「A」,「B」,「C」,「D」,「K」の5 種類のアルファベットを入力し、「Z」が入力されるまで繰り返す'(R),!.
'キーボードから,「A」,「B」,「C」,「D」,「K」の5 種類のアルファベットを入力し、「Z」が入力されるまで繰り返す'([]).

'それぞれの入力個数を数えて画面出力する.これら6 文字以外の入力はカウントしない'(_アルファベットならび) :-
        'それぞれの入力個数を数える.これら6 文字以外の入力はカウントしない'(_アルファベットならび,0,0,0,0,0,A,B,C,D,E),
        writef('A = %t, B = %t, C = %t, D = %t, E = %t\n',[A,B,C,D,E]).


'それぞれの入力個数を数える.これら6 文字以外の入力はカウントしない'([],A,B,C,D,E,A,B,C,D,E).
'それぞれの入力個数を数える.これら6 文字以外の入力はカウントしない'([_アルファベット|R],A1,B1,C1,D1,E1,A,B,C,D,E) :-
        カウント(_アルファベット,A1,B1,C1,D1,E1,A2,B2,C2,D2,E2),
        'それぞれの入力個数を数える.これら6 文字以外の入力はカウントしない'(R,A2,B2,C2,D2,E2,A,B,C,D,E),!.
'それぞれの入力個数を数える.これら6 文字以外の入力はカウントしない'([_アルファベット|R],A1,B1,C1,D1,E1,A,B,C,D,E) :-
        'これら6 文字以外の入力はカウントしない',
        'それぞれの入力個数を数える.これら6 文字以外の入力はカウントしない'(R,A1,B1,C1,D1,E1,A,B,C,D,E),!.


カウント('A',A1,B,C,D,E,A2,B,C,D,E) :-
        A2 is A1 + 1.
カウント('B',A,B1,C,D,E,A,B2,C,D,E) :-
        B2 is B1 + 1.
カウント('C',A,B,C1,D,E,A,B,C2,D,E) :-
        C2 is C1 + 1.
カウント('D',A,B,C,D1,E,A,B,C,D2,E) :-
        D2 is D1 + 1.
カウント('E',A,B,C,D,E1,A,B,C,D,E2) :-
        E2 is E1 + 1.

'これら6 文字以外の入力はカウントしない'.