• ベストアンサー

数当てゲームの桁数指定

ttp://homepage3.nifty.com/aokura/joho/sample21.html これは、ソフトウェア開発技術者試験の問題をC言語に直してあります。 問題はttp://www.kikiroom.com/it/sw/14s/14-sw-pm2.htmlです。 ここでかかれているソースは4桁固定の処理ですが これを自分で好きな桁数を入力して動作させるにはどうしたらよいでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

> ループさせないとnums[]には一つのパターンしか入らないのではないでしょうか・・ "多重"ループは不要です。

yamasan0829
質問者

お礼

ありがとうございます。 私自身C言語を習いたてでしてまだ応用力があまりない為アルゴリズムを導き出すことが出来ませんので、これまでの方法でやろうと思います。。 わざわざヒントを与えていただいてありがとうございました。

その他の回答 (4)

回答No.4

> 数字を重複しないように一桁目からx桁目までループさせ、 > 全てのパターンの数字を作る関数だと思います。 だったら多重ループは不要です。

yamasan0829
質問者

お礼

ありがとうございます。 配列nums[]に全パターンの数字を入れることが条件となっておりますので、 ループさせないとnums[]には一つのパターンしか入らないのではないでしょうか・・

回答No.3

> 具体的にどの様な方法で実現できるのかご教示願えませんでしょうか。 では伺います。 initは何をする関数ですか?

yamasan0829
質問者

お礼

数字を重複しないように一桁目からx桁目までループさせ、 全てのパターンの数字を作る関数だと思います。 例えば以下のように・・ 012 013 ~ 097 098 100 102

yamasan0829
質問者

補足

あ~間違えてました。 気をつけて書いたつもりですが重複しているものを書いてしまいました。 100→×

回答No.2

> その場合は、init()へ桁数を送りその桁数までforの処理を以下のように行うという形しかないでしょうか。 initの方法は他にもあります。

yamasan0829
質問者

お礼

様々な言葉でサーチをかけましたがなかなかそのような処理が書いてあるページにたどり着けませんでしたので、 仕方がないと思い、長いですがこの方法でやるしかないと思っていました。 具体的にどの様な方法で実現できるのかご教示願えませんでしょうか。

回答No.1

各桁を重複させずに作れる数は高々10桁なので、 10桁版を作っておけばあとはどうにでもなるんじゃないですか?

yamasan0829
質問者

お礼

なるほど、そういう手もありますね。ありがとうございます。 その場合は、init()へ桁数を送りその桁数までforの処理を以下のように行うという形しかないでしょうか。 for(){ 桁数1の場合ここのみ for(){2の場合ここまで for(){3の場合ここまで  ~ for(){10の場合ここまで } ~ } } }

関連するQ&A