このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 152代目 #954 # [1] 授業単元:計算機アルゴリズム # [2] 問題文(含コード&リンク): # 設問1-1 # プログラム例7.2.1を、最小値の要素番号idx(x[idx]が最小値となるようなidx)を求めるように変更した後、 # その最小値x[idx]と先頭要素x[0]の2つの要素を入れ替え、配列の全要素を表示するようにしなさい。 # この実行の結果、x[0]はx[0],x[1],・・・,x[9]の最小値となります。 # プログラム例7.2.1 # ttp://www.dotup.org/uploda/www.dotup.org2207772.txt.html # # include # # int main(void) # { # int n = 10; # int x[10] = {3, 5, 1, 9, 5, 7, 4, 2, 6, 10}; # int max, i; # max = x[0]; # for (i = 1; i < n; i++) # { # if (x[i] > max) max = x[i]; # } # printf("最大値は %d です. \n", max); # return 0; # } # # 設問1-2 # 次にx[1],x[2],・・・,x[9]に対し上記設問1-1と同じ操作を行い、次にx[2],x[3],・・・,x[9]に対し上記設問1-1と同じ操作を行い、 # ・・・,最後にx[8],x[9]に対し上記設問1-1と同じ操作を行うという手順で処理を進めると最終的に配列xを昇順にソーティングできます。 # そのようにプログラムを作成しなさい。 # 設問1-3 # 上記設問1-2をfor文の2重ループで書きなさい。 # 'ならびの最小値要素を求め先頭要素と入れ替える'(L1,L2) :- ならびの最小値要素を求め(L1,L0,_最小値要素,R1), 先頭要素と入れ換える(L0,_最小値要素,R1,L2). ならびの最小値要素を求め(L1,L0,_最小値要素,R1) :- append(_前,[_最小値要素|_後],L1), 最小値要素の値は前ならびの全ての要素以下(_最小値要素,_前), 最小値要素の値は後ならびの全ての要素以下(_最小値要素,_後). 最小値要素の値は前ならびの全ての要素以下(_最小値要素,_前) :- forall(member(_要素,_前),_要素 >= _最小値要素). 最小値要素の値は後ならびの全ての要素以下(_最小値要素,_後) :- forall(member(_要素,_後),_要素 >= _最小値要素). 先頭要素と入れ換える([],_最小値要素,R1,[_最小値要素|R1]). 先頭要素と入れ換える([_先頭要素|L0],_最小値要素,R1,L2) :- append([[_最小値要素|L0],[_先頭要素|R1]],L2).