このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 128代目 #957 # [1] 授業単元: C言語 # [2] 問題文(含コード&リンク): # 100個の乱数を発生させ最大値、最小値、平均を求める # また最大値、最小値それぞれ何番目にあるか答えよ '最小値位置・最小値・最大値位置・最大値・平均'(_最小値位置,_最小値,_最大値位置,_最大値,_平均) :- _初期値 is randoam mod 65535 + 1, findall(Y,(乗算合同法による乱数発生(_初期値,Nth,Y,X),(Nth>100,!,fail;true)),L), 最大値(L,_最小値位置,_最小値), 最小値(L,_最大値位置,_最大値), sum_list(L,_合計), _平均 is _合計 / 100. 最小値([A|R],_最小値位置,_最小値) :- 最小値(2,A,R,1,_最小値位置,_最小値). 最小値(_,_最小値,[],M,M,_最小値). 最小値(N1,Min,[A|R],M,N_最小値) :- A < Min, N2 is N + 1, 最小値(N2,A,R,N1,N,_最小値). 最小値(N1,Min,[_|R],M,N,_最小値) :- A >= Min, N2 is N + 1, 最小値(N2,Min,R,M,N,_最小値). 最大値([A|R],_最大値位置,_最大値) :- 最大値(2,A,R,1,_最大値位置,_最大値). 最大値(_,_最大値,[],M,M,_最大値). 最大値(N1,Max,[A|R],M,N,_最大値) :- A > Max, N2 is N + 1, 最大値(N2,A,R,N1,N,_最大値). 最大値(N1,Max,[_|R],M,N,_最大値) :- A =< Max, N2 is N + 1, 最大値(N2,Max,R,M,N,_最大値). 乗算合同法による乱数発生(_初期値,Nth,Y,X) :- 乗算合同法(1,17797,_初期値,65535,Nth,Y,X). 乗算合同法(Nth,A,N,_法,Nth,N,X) :- X is N / _法. 乗算合同法(Nth1,A,N,_法,Nth,Y,X) :- 乗算合同法演算(A,N,_法,M), Nth2 is Nth1 + 1, 乗算合同法(Nth2,A,M,_法,Nth,Y,X). 乗算合同法演算(A,N,_法,M) :- M is (A * N) mod _法.