このディレクトリの索引

# [1] 授業単元:プログラミング実習
# [2] 問題文(含コード&リンク):0から1024の間の数値を繰り返し入力して
# 入力回数、最大値、最小値を求めるプログラムを作成せよ。
# 範囲外の数値が入力されたとき終了する。
# 範囲外の数値は入力回数、最大値、最小値には含めない。
# 最初の入力で範囲外の数が入力された場合は 入力回数0 とのみ表示する

'0から1024の間の数値を繰り返し入力して入力回数、最大値、最小値を求める' :-
        '数値を入力'(_数値),
        '0から1024の間の数値を繰り返し入力して(範囲外の数値が入力されたとき終了する)'(_数値,0,_繰り返し回数,_数値,_最大値,数値,_最小値).

'0から1024の間の数値を繰り返し入力して(範囲外の数値が入力されたとき終了する)'(_数値,_繰り返し回数,_繰り返し回数,_最大値,_最大値,最小値,_最小値) :-
        数値が範囲外(_数値),!.
'0から1024の間の数値を繰り返し入力して(範囲外の数値が入力されたとき終了する)'(_数値,_繰り返し回数,_繰り返し回数,_最大値,_最大値,最小値,_最小値) :-
        数値が範囲外(_数値),!.
'0から1024の間の数値を繰り返し入力して(範囲外の数値が入力されたとき終了する)'(_数値,_繰り返し回数1,_繰り返し回数,_最大値1,_最大値,最小値1,_最小値) :-
        _数値 > _最大値1,
        _繰り返し回数2 is _繰り返し回数1 + 1,
        '数値を入力'(_数値2),
        '0から1024の間の数値を繰り返し入力して(範囲外の数値が入力されたとき終了する)'(_数値2,_繰り返し回数2,_繰り返し回数,_数値,_最大値,_最小値1,_最小値),!.
'0から1024の間の数値を繰り返し入力して(範囲外の数値が入力されたとき終了する)'(_数値,_繰り返し回数1,_繰り返し回数,_最大値1,_最大値,最小値1,_最小値) :-
        _数値 < _最小値1,
        _繰り返し回数2 is _繰り返し回数1 + 1,
        '数値を入力'(_数値2),
        '0から1024の間の数値を繰り返し入力して(範囲外の数値が入力されたとき終了する)'(_数値2,_繰り返し回数2,_繰り返し回数,_最大値1,_最大値,_数値,_最小値),!.
'0から1024の間の数値を繰り返し入力して(範囲外の数値が入力されたとき終了する)'(_数値,_繰り返し回数1,_繰り返し回数,_最大値1,_最大値,最小値1,_最小値) :-
        _繰り返し回数2 is _繰り返し回数1 + 1,
        '数値を入力'(_数値2),
        '0から1024の間の数値を繰り返し入力して(範囲外の数値が入力されたとき終了する)'(_数値2,_繰り返し回数2,_繰り返し回数,_最大値1,_最大値,_最小値1,_最小値),!.

数値を入力(_数値) :-
        write('数値を入力してください : '),
        get_integer(Line),
        数値を入力の診断(Line,_数値),!.
数値を入力(_数値) :- 数値を入力(_数値).

数値を入力の診断(Line,_数値) :-
        atom_to_term(Line,_数値,_),
        number(_数値),!.
数値を入力の診断(Line,_数値) :-
        write_formatted('入力された %t は数値ではありません。\n再入力をお願いします。\n',[Line]),
        fail.

数値が範囲外(_数値) :- _数値 > 1024.
数値が範囲外(_数値) :- _数値 < 0.