-1

宿題のお手伝いです。私は単純なカード ディール プログラムを与えられ、スーツごとに描かれたランクを記録できるリスト クラスを作成するタスクを与えられました。私が今抱えている問題は、私のアウトプットです。スーツごとに繰り返されるループにランクを配置しました。停止カードがヒットした後、ループが停止し、各スーツからどのカードが引き出されたかを出力する必要があります。

私の出力関数は次のようになります。

void list::Output(){
  while(curr!=NULL){
  cout << curr->data;
  curr = curr->next;
  }
}

これは、文字列をリストの 1 つに入れるループの 1 つです。

list Deck[4];
if (suit2 == suit[0]){        //suit2 is the suit of the current card
   for (int i=0;i<13;i++){    //suit is a const string array provided by the teacher
      if (rank2 == rank[i])   //rank2 is the current rank, rank is the const string
         Deck[0].Input(i);
   }
}

出力関数を呼び出すと、正常に動作するようです。つまり、endl を追加しようとするまでです。それの後に、または任意の種類の std 出力を追加します。私がそれをやろうとすると、出力はすべて間隔をあけて奇妙にフォーマットされます。

たとえば、単純に書くと

Deck[0].Output();

次のように、正常にコンパイルされ、正常に出力されます。

 King Jack 8 Jack 6 Ace%

しかし、その後に endl を追加すると:

Deck[0].Output();
cout << endl;

正常にコンパイルされますが、次のように出力されます。

King



Jack
8



Jack




6
Ace

何が原因でしょうか? とてもイライラします。

4

1 に答える 1

0

あなたが何かをしているなら

if (rank2 == rank[i])
    Deck[0].Output(i);
    cout << endl;

次に、それcout << endl;が無条件に実行されることを認識します。インデントは誤解を招きます。成功する

if (rank2 == rank[i]) {
    Deck[0].Output(i);
    cout << endl;
}

中かっこのペアに注意してください。

于 2013-09-23T02:35:33.387 に答える