2010-12-10 61 views
0

下面的函数应该找出当我正在这个纸牌游戏中有两个重复的卡。不知道为什么这个功能永远不会返回正确的结果

int duplicate (struct card hand[]) 
{ 
    int i = 0, j = 0, duplicate = 0; 

    for (i = 0; i < 5; i++) 
    { 
     for (j = i + 1; j < 5; j++) 
     { 
      if (hand[i].suit == hand[j].suit && hand[i].face == hand[j].face) 
      { 
       duplicate++; 
      } 
     } 
    } 
    return duplicate; 
} 

我想不通为什么,但是当手内的卡值是相同的它从来没有增加的重复卡的数量。

我相信它一定是明显的东西,但我没看到它。

谢谢!

+1

我建议使用一个调试器来通过它,并会显示你明显。 – 2010-12-10 04:40:52

回答

0

你应该让我们知道suithandstruct card的类型 - 这可能会影响他们应该如何比较(尤其是如果他们是指针)。

此外,您应该让我们知道您传递的数据,您获得的结果以及期望的结果。例如,如果你传递了一张5张牌,其中两张是相同的,它看起来像你会得到1个返回(这可能是你期望的,但你可能会期待2 - 我不知道)。这是因为你不计算i指向的卡。再次 - 你是否应该依赖于你想要/需要的结果。

但是,另一个几乎可以肯定不是你想要的是,如果你通过一张5张牌,所有这些都是相同的。你可能会期待5(或者4)的结果,但你会得到10,因为当:

i == 0, you count the 4 dupes 
i == 1, you count the next 3 cards as dupes again 
i == 2, the next 2 get counted again, 

etc... 
0

我的猜测不知道有关输入或定义什么,就是==运营商是不是做你认为对西装。那些可以从盒子或需要特别关注的指针/对象中进行比较的基元?

相关问题