このディレクトリの索引

# 出典 :: C/C++の宿題片付けます #709 # [1] 授業単元:C言語とアルゴリズム # [2] 問題文(含コード&リンク): http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10227.txt # # [課題1] #  100から999までの乱数が100個入った配列aの内容を10個ずつに区切って表示しなさい.さらに # 配列aのデータを基本選択法によって昇順に整列し、整列後の配列a内容を表示させなさい. # [課題2] #  100から999までの乱数が100個入った配列aの内容を10個ずつに区切って表示しなさい.さらに # 配列aのデータを基本選択法によって降順に整列し、整列後の配列a内容を表示させなさい. :- dynamic(a/1). a([983,386,577,215,393,935,686,292,349,821,762,527,690,359,663,626,340,226, 872,236,711,468,367,529,882,630,162,923,767,335,429,802,622,958,969,967,893, 656,311,242,529,973,721,219,384,437,798,624,615,670,813,326,191,180,756,973, 762,870,896,581,205,325,384,727,336,405,746,229,113,957,424,595,982,145,714, 367,534,564,943,150,287,808,376,378,888,184,403,651,954,299,232,160,576,568, 839,812,926,586,994,939]). '100から999までの乱数が100個入ったならびaの内容を10個ずつに区切って表示' :- '100から999までの乱数が100個入ったならびaの内容を'(_a), '10個ずつに区切って表示'(_a). '100から999までの乱数が100個入ったならびaの内容を'(_a) :- a(_a). '10個ずつに区切って表示'(_a) :- forall( '10個ずつに区切って'(_a,_表示文字列), 表示(_表示文字列)). '10個ずつに区切って'(_a,[_1,_2,_3,_4,_5,_6,_7,_8,_9,_10]) :- findnsols(10,_乱数要素,member(_乱数要素,_a),[_1,_2,_3,_4,_5,_6,_7,_8,_9,_10]). 表示(_10個ずつのならび) :- atomic_list_concat(_10個ずつのならび,',',_表示文字列), writef('%w\n',[_表示文字列]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% '100から999までの乱数が100個入ったならびaを生成する' :- '100から999までの乱数が100個入ったならび'(_100から999までの乱数が100個入ったならび), ならびaを生成する(_100から999までの乱数が100個入ったならび). '100から999までの乱数が100個入ったならび'(_100から999までの乱数が100個入ったならび) :- findall(_乱数,( '100から999までの乱数が100個入った'(_乱数)),_100から999までの乱数が100個入ったならび). '100から999までの乱数が100個入った'(_乱数) :- between(1,100,_), random(100,999,_乱数). 'ならびaを生成する'(_100から999までの乱数が100個入ったならび) :- abolish(a/1), assertz(a(_100から999までの乱数が100個入ったならび)). % :- '100から999までの乱数が100個入ったならびaを生成する'.