このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 154代目 #95 # [1] 授業単元:C言語入門 # [2] 問題文(含コード&リンク):http://ime.nu/i.imgur.com/hnQll.jpg # # 演習 9-2 整数(最大100まで)をmainプログラムで用意し、キーボードから # 100個以下の整数を任意の個数、入力する。ただし、最初に入力する # データの個数を入力する。 # データの入った配列とデータ数を以下の関数に渡して、配列の中の # 最大値と最小値、および平均値を計算するプログラムを作成せよ。 # 'キーボードから100個以下の整数(最大100まで)を任意の個数、入力する。ただし、最初に入力するデータの個数を入力する。 データの入ったならびとデータ数を受け取りならびの中の最大値と最小値、および平均値を計算する'(_最大値,_最小値,_平均値) :- 'ただし、最初に入力するデータの個数を入力する。'(_データ数), データを入力する(_データ数,_データの入ったならび), 'データの入ったならびとデータ数を受け取りならびの中の最大値と最小値、および平均値を計算する'(_データの入ったならび,_データ数,_最大値,_最小値,_平均値). '個数を入力する'(_個数) :- 整数を得る('入力する整数の個数は : ',_個数 =< 100,_個数). 整数を得る(_催促文,_項検査,_整数) :- '行入力後に整数入力検査、項検査を施す。'(_催促文,_項検査,_整数),!. 整数を得る(_催促文,_項検査,_整数) :- 整数を得る(_催促文,_項検査,_整数). '行入力後に整数入力検査、項検査を施す。'(_催促文,_項検査,_整数) :- 催促文表示後に行入力(_催促文,_行文字列), 整数入力検査(_行文字列,_整数), 項検査(_項検査). 催促文表示後に行入力(_催促文,_行文字列) :- writef('%w',[_催促文]), 行入力(_行文字列). 整数入力検査(_行文字列,_整数) :- 行文字列は整数変換可能(_行文字列,_整数),!. 整数入力検査(_行文字列,_整数) :- writef('行文字列 %w からは整数が得られません。\n',[_行文字列]),fail. 行文字列は整数変換可能(_行文字列,_整数) :- atom_number(_行文字列,_整数), integer(_整数). 項検査(_項検査) :- call(_項検査),!. 項検査(_項検査) :- writef('%w の項検査に失敗しました。\n',[_項検査]),fail. データを入力する(_データ数,_データの入ったならび) :- length(_データの入ったならび,_データ数), findall(_100以下の整数,( '100以下の整数を入力する'(_データの入ったならび,_100以下の整数)),_データの入ったならび). '100以下の整数を入力する'(_データの入ったならび,_100以下の整数) :- nth1(_nth1,_データの入ったならび,_), atomic_list_concat([_nth1,'番目の整数 : '],_催促文), 整数を得る(_催促文,between(1,100,_100以下の整数),_100以下の整数). 'データの入ったならびとデータ数を受け取りならびの中の最大値と最小値、および平均値を計算する'(_データの入ったならび,_データ数,_最大値,_最小値,_平均値) :- 最大値(_データの入ったならび,_最大値), 最小値(_データの入ったならび,_最小値), 平均値(_データの入ったならび,_データ数,_平均値). 最大値(_データの入ったならび,_最大値) :- select(_最大値,_データの入ったならび,_最大値を除いたならび), '全てのデータが最大値に等しいか最大値より小さい'(_最大値を除いたならび,_最大値). 最小値(_データの入ったならび,_最小値) :- select(_最小値,_データの入ったならび,_最小値を除いたならび), '全てのデータが最小値に等しいか最小値より大きい'(_最小値を除いたならび,_最小値). 平均値(_データの入ったならび,_データ数,_平均値) :- sum_list(_データの入ったならび,_合計), _平均値 is _合計 / _データ数. '全てのデータが最大値に等しいか最大値より小さい'(_データならび,_最大値) :- forall(member(_データ,_データならび),_データ @=< _最大値). '全てのデータが最小値に等しいか最小値より大きい'([_データ|R],_最小値) :- forall(member(_データ,_データならび),_データ @>= _最小値). 行入力(_行文字列) :- read_line_to_codes(current_input,_文字コードならび), atom_codes(_行文字列,_文字コードならび).