- ベストアンサー
C言語のプログラムで複数パターンを出力する方法
- C言語のプログラムで複数パターンを出力させる方法について教えてください。
- このプログラムはコンパイルできますが、まだ勉強不足で複数パターンの出力方法に困っています。
- どのようにすればC言語のプログラムで複数パターンを出力できるでしょうか。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
int k; の次の行に int m; ってのを足して、 srand( time(NULL)); の次の行に for (m = 0;m < 10;m++) { ってのを足して、 return 0; の前の行に } ってのを足してみよう。
その他の回答 (4)
- Ogre7077
- ベストアンサー率65% (170/258)
No.4 ですがちょっと間違いました。 見つけた件数の判断方法は修正です。 for (int no = 0, out = 0; no < 総数 && out < パターン出力最大件数; no++){ _ 配列abcからno番目の組み合わせを探して第一引数に格納(組み合わせ例, abc, no); _ if (組み合わせが条件を満たしているか確認(組み合わせ例)) { _ _ 表示(組み合わせ例); _ _ out++; _ } }
お礼
有難うございました。別の意味で参考になります。
- Ogre7077
- ベストアンサー率65% (170/258)
前提として「一回の入力で5件から49件までを入力」としたほうが良いでしょう。 それはそうと 「n個からm個を重複しないで選ぶ」といえば、 数学的にコンビネーション nCm を使って、組み合わせパターンの総数が計算できます。 5C5 = 1 6C5 = 6 7C5 = 21 ... 49C5 = 1906884 つまり入力件数が6件以下だと、どう足掻いてもパターンを10件も表示できません 7件以上であっても、乱数で選ぶとパターン重複の可能性が付きまといます。 というわけで、ちゃんとやろうとするならば int 組み合わせ例[5]; int 総数 = コンビネーション計算(件数, 5); for (int no = 0; no < 総数 && no < パターン出力最大件数; no++){ _ 配列abcからno番目の組み合わせを探して第一引数に格納(組み合わせ例, abc, no); _ if (組み合わせが条件を満たしているか確認(組み合わせ例)) { _ _ 表示(組み合わせ例); _ } } 「no番目の組み合わせ」を探すには、乱数を使っては元も子もないので、 再帰などを活用して漏れなく見つけ出してあげましょう。
- Tacosan
- ベストアンサー率23% (3656/15482)
偶数だけ入れてやれ. さておき「パターン」ってなんだ. しかし, もうちょっと「プログラムを読む人」のことを考えて書けないものかなぁ....
- hitomura
- ベストアンサー率48% (325/664)
……ああ、うん、コンパイルはできるけど、入力回数が 50 回超えたらどうなるか考えた方がいいんじゃないかなぁ。
補足
一回の入力で50をこえることはないことを」前提としています。いっかいの入力で10パターン程度の出力をさせるにはソースコードをどう書き換えればいいのでしょうか?
お礼
ありがとう御座いました。最初は、for(....も入っていたんですが{を return分の後に書いていました。まだまだ勉強ぶそくです、助かりました。