このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1354070278/70
#  [1] c言語 
#  [2] () キーボードから0 以上100以下の整数を入力し, 
#  (1) 0以上10未満 
#  (2) 10 以上20未満 
#  (3) 20 以上30未満 
#  ..... 
#  (10) 90 以上100 未満 
#  (11) 100 
#  の11 段階に分類して頻度を調べるプログラムを作成せよ.ただし,負の値が入力された場合 
#  にはプログラムを終了し,101 以上の数が入力された場合には入力値が無効であることを画面 
#  表示して頻度には数えないこと. 
#   
#  ()整数値を要素にもつk 行m 列行列A とm 行n 列行列B を宣言し,それらの要素をキーボー 
#  ドから入力してA×B を算出するプログラムを作成せよ.ただし,k,m,n はk≠m,m≠n,k≧2, 
#  m≧2,n≧2 を満たす任意の値をプログラム内で各自設定してよい.ただし,A×B の値を画面 
#  表示する前に,k 行n列行列C に値を代入しておくこと. 
#   
#  


' キーボードから0 以上100以下の整数を入力し, 
(1) 0以上10未満 
(2) 10 以上20未満 
(3) 20 以上30未満 
..... 
(10) 90 以上100 未満 
(11) 100 
の11 段階に分類して頻度を調べるプログラムを作成せよ.ただし,負の値が入力された場合 
にはプログラムを終了し,101 以上の数が入力された場合には入力値が無効であることを画面表示して頻度には数えないこと.' :-
        頻度ならびの初期化(0,_頻度ならびの初期状態),
        'キーボードから0 以上100以下の整数を入力し,11 段階に分類して頻度を調べる.ただし,負の値が入力された場合にはプログラムを終了し,101 以上の数が入力された場合には入力値が無効であることを画面表示して頻度には数えないこと'(_頻度ならびの初期状態,_頻度ならび,継続),
        現在の頻度の表示(_頻度ならび).

頻度ならびの初期化(100,[[100,101,0]]) :-
        '100の場合だけは範囲指定にならないが、ここでは101未満として形式的に一致させる',!.
頻度ならびの初期化(N,[[N,N_2,0]|R]) :-
        N_2 is N + 10,
        頻度ならびの初期化(N_2,R).

'100の場合だけは範囲指定にならないが、ここでは101未満として形式的に一致させる'.


'キーボードから0 以上100以下の整数を入力し,11 段階に分類して頻度を調べる.ただし,負の値が入力された場合にはプログラムを終了し,101 以上の数が入力された場合には入力値が無効であることを画面表示して頻度には数えないこと'(_,_頻度ならび,_頻度ならび,終了) :- !.
'キーボードから0 以上100以下の整数を入力し,11 段階に分類して頻度を調べる.ただし,負の値が入力された場合にはプログラムを終了し,101 以上の数が入力された場合には入力値が無効であることを画面表示して頻度には数えないこと'(_入力された整数,_頻度ならび_1,_頻度ならび,_) :-
        現在の頻度の表示(_頻度ならび_1),
        ' キーボードから0 以上100以下の整数を入力する.ただし,負の値が入力された場合にはプログラムを終了し,101 以上の数が入力された場合には入力値が無効であることを画面表示する.'(_入力された整数),
        頻度ならびの更新(_入力された整数,_頻度ならび_1,_頻度ならび_2,_状態_2),
        'キーボードから0 以上100以下の整数を入力し,ただし,負の値が入力された場合にはプログラムを終了し,11 段階に分類して頻度を調べる.ただし,負の値が入力された場合にはプログラムを終了し,101 以上の数が入力された場合には入力値が無効であることを画面表示して頻度には数えないこと'(_入力された整数,[],_頻度ならび,_状態_2).

' キーボードから0 以上100以下の整数を入力する.ただし,負の値が入力された場合にはプログラムを終了し,101 以上の数が入力された場合には入力値が無効であることを画面表示する.'(_整数) :-
        write('0 以上100以下の整数を入力してください : '),
        get_line(Line),
        '診断::整数入力'(Line,_整数),!.
' キーボードから0 以上100以下の整数を入力する.ただし,負の値が入力された場合にはプログラムを終了し,101 以上の数が入力された場合には入力値が無効であることを画面表示する.'(_整数) :-
        ' キーボードから0 以上100以下の整数を入力する.ただし,負の値が入力された場合にはプログラムを終了し,101 以上の数が入力された場合には入力値が無効であることを画面表示する.'(_整数).

'診断::整数入力'(Line,_整数) :-
        atom_to_term(Line,_整数,_),
        integer(_整数),
        _整数 < 101,!.
'診断::整数入力'(Line,_整数) :-
        writef('入力された%tからは0以上100以下の整数が得られません。再入力をお願いします。\n',[Line]),
        fail.

頻度ならびの更新(_入力された整数,_頻度ならび_1,_頻度ならび_2,継続) :-
        between(0,100,_入力された整数),
        頻度ならびの更新(_入力された整数,_頻度ならび_1,_頻度ならび_2),!.
頻度ならびの更新(N,_頻度ならび,_頻度ならび,終了) :-
        N < 0,!.

頻度ならびの更新(_入力された整数,_頻度ならび_1,_頻度ならび_2) :-
        append(L0,[[_範囲以上,_範囲未満,_頻度_1]|R],_頻度ならび_1),
        _入力された整数 >= _範囲以上,
        _入力された整数 < _範囲未満,
        _頻度_2 is _頻度_1 + 1,
        append(L0,[[_範囲以上,_範囲未満,_頻度_2]|R],_頻度ならび_2).

頻度ならびの初期化(100,[[100,101,0]]) :- !.
頻度ならびの初期化(N,[[N,N_2,0]|R]) :-
        N_2 is N + 10,
        頻度ならびの初期化(N_2,R).

現在の頻度の表示([[100,101,_頻度]]) :-
        writef('%t  頻度=%t\n',[_頻度]),!.
現在の頻度の表示([[_範囲以上,_範囲未満,_頻度]|R]) :-
        writef('%t 以上 %t 未満 頻度=%t\n',[_範囲以上,_範囲未満,_頻度]),
        現在の頻度の表示(R).