このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 150代目 #131 # [1] 授業単元:プログラミング # [2] 問題文(含コード&リンク):http://codepad.org/EEw71Jn2 # # [問1] 長さ100のstruct rocker型の配列 struct rocker Rockers[100]; を定義して、この中の所定の数のロッカーに乱数を格納するプログラムを以下の手続きにしたがって作りなさい。 # # ○ データ構造として次の構造体を用意する。 # struct rocker { # int data; //保存するデータ # char name[20]; //ロッカーのラベル # }; # # ○ main関数の中身が次のようになるものとする。 # int main() { # int N; # struct rocker Rockers[100]; # scanf("%d", &N); # set_rockers(Rockers, N); # display_rockers(Rockers, N); # } # # 上記main関数の中の # void set_rockers(struct rocker rockers[], int length); //0番目からlength-1番目のロッカーにラベル(name)と乱数(data)を格納する関数 # および # void display_rockers(struct rocker rockers[], int length);//0番目からlength-1番目のロッカーのname, dataを全て表示する関数。 # を次の仕様を元に定義し、プログラムを完成させなさい。 # # set_rockers()の仕様: #  例えば0番目のロッカーには # rocker[0].name が "rocker-0"という文字列がラベルとしてセットされ、 # rocker[0].data に乱数(例:1804289383)がセットされます。 # # ラベルをセットするにはsprintf()を使用すると便利です。 #  sprintf()は例えば #  char str[100]; #  int i = 1; # sprintf(str, "rocker-%d", i); # とすると、strには"rocker-1"がセットされます。 # #  乱数はあらかじめ用意されている関数 int rand()を使用すると得ることが出来ます。ただし # #include # が必要です。rand()は呼び出すたびに全く異なる数を返してきます。なお、rand()を使う前にsrand(0)を実行するようにしてください。 # # display_rockers()の仕様: # printf("%s : %d\n", rockers[i].name, rockers[i].data); # をlength個分繰り返してください。 # # # gcc kadai11-1.c # ./a.out # 3 # rocker-0 : 1804289383 # rocker-1 : 846930886 # rocker-2 : 1681692777 # '100個のロッカーを用意して、この中の所定の数のロッカーに乱数を格納する'(_所定の数) :- '100個のロッカーを用意して、', 'この中の所定の数のロッカーに乱数を格納する'(_所定の数). '100個のロッカーを用意して、' :- forall(between(1,100,N),assertz(ロッカー(N,_))). 'この中の所定の数のロッカーに乱数を格納する'(_所定の数) :- findall(N,between(1,100,N),_1から100までのロッカー番号ならび), forall(between(1,_所定の数,_),ロッカーに乱数を格納する'(_1から100までのロッカー番号ならび)). ロッカーに乱数を格納する'(_更新可能なロッカー番号ならび) :- random_select(_ロッカー番号,_更新可能なロッカー番号ならび,_更新可能なロッカー番号ならび_2), _乱数 is random(100000000) + 1, ロッカーに乱数を格納する'(_ロッカー番号,_乱数,_更新可能なロッカー番号ならび_2). ロッカーに乱数を格納する'(_ロッカー番号,_乱数,_更新可能なロッカー番号ならび_2) :- 乱数を格納する(_ロッカー番号,_乱数). ロッカーに乱数を格納する'(_,_,_更新可能なロッカー番号ならび_2) :- ロッカーに乱数を格納する'(_更新可能なロッカー番号ならび_2). 乱数を格納する(_ロッカー番号,_乱数) :- retract(ロッカー(_ロッカー番号,_)), assertz(ロッカー(_ロッカー番号,_乱数)). :- dynamic(ロッカー/2).