• ベストアンサー

C++初心者です

C++初心者です 現在、いくつかあるカードの中から一枚を選んだら そのカードが抜けて他のカードが残り、最後には一枚も残らなくなるというプログラムを作っています。 123 1を抜く 1 3 1を抜く   3 3を抜く しかしやっぱり初心者なものでifばかり連続してやっていたらうまくいかなくなってしまいました。しかもifでツリーを作っているだけなので最初に決めた数以上に増やすことができません・・・・・ どうしたらうまくいくんでしょうか・・・・ ほんとに初心者なのでぜひ教えてください また何か伝わりづらい点があればそれも教えてください どうかだれかお願いしますm(_ _)m

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

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

> また何か伝わりづらい点があればそれも教えてください  全体的にどういうインタフェースでデータの管理をしているのかが全然わからない。  よって、一般的な考え方だけ記す。 ◆カードの枚数を任意の数、n枚とする ◆カードの種類、有無はint型のテーブルで管理する  上記の条件で作るとすると (1)n枚分のテーブル領域を生成する (2)テーブルを初期化し、カードを表示  (テーブル内をカードの種類を表す数字でカードの並びの順に満たす) (3)抜くカードの選択 (4)テーブルの抜かれたカードの場所には空白を表す値を入れる  (カードの種類が正の整数なら-1とか) (5)テーブル上の空白以外の場所のカードを表示 (6)すべてのカードが無くなるまで(3)以下を繰り返し  (while文またはfor文を使ったループ)

その他の回答 (1)

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

C++とか関係ない気もしますが… カードの有無を記憶するフラグ変数(配列)なり用意してはどうですか? #define CARD_MAX 5 char *card[CARD_MAX] = { "1", "2", "3", "4", "5" }; char flag[CARD_MAX]; memset(flag, 0x00, sizeof(flag)); として、カードが残っている場合はカードの内容を、残っていない場合は空白を表示する様にループで回せばよいでしょう。 上の例だと、カードを取った後は対応するflag[]の値を0以外にする。とか。 if文の羅列って…どんなコードにしたんでしょう?

関連するQ&A

専門家に質問してみよう