家庭作业帮助:用户自制的列表输出

时间:2013-09-23 02:31:33

标签: c++ list user-defined-functions

这是家庭作业的帮助。我已经获得了一个简单的卡片交易程序,我已经被赋予了一个列表类的任务,可以记录每个套装绘制的等级。我现在遇到的问题是我的输出。我已经通过一个循环来对每个套装进行迭代,并且在停止卡被击中后,循环停止并且我必须输出从每个套装中抽取的牌。

我的输出功能如下所示。

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

这是将字符串放入其中一个列表的循环之一。

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;之后或添加任何类型的标准输出。当我尝试这样做时,输出将全部间隔开,格式奇怪。

例如,当我写简单时

Deck[0].Output();

编译很好,输出很好,如下:

 King Jack 8 Jack 6 Ace%

但是当我在它之后添加一个endl时:

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

编译很好,但输出如下:

King



Jack
8



Jack




6
Ace

可能导致这种情况的原因是什么?这非常令人沮丧。

1 个答案:

答案 0 :(得分:0)

如果您正在做类似

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

然后意识到cout << endl;是无条件执行的;缩进是误导性的。做到这一点

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

请注意这对括号。