0

我要疯了。我正在编写一个源代码,它从洗好的牌组中选择 5 张扑克牌,并识别是否有一对、双对、三对等。然而,处理寻找顺子的功能让我很难过。我不得不重写这个,因为我之前没有考虑过 Ace 可以值 1 和 11 的事实。这是来源:

int hasStraight(const int wFirstFace[],int size)
{
    int *firstfacePtr,i,j;
    firstfacePtr=wFirstFace;

    for(i=0;i<=1;i++)
    {
        for(j=0;j<=size-2;j++)
        {
            if (firstfacePtr[j]!=firstfacePtr[j+1]-1 && i==0)
                break;
            else if (firstfacePtr[j]!=firstfacePtr[j+1]-1 && i==1)
                return 0;
            else if (j==3 &&firstfacePtr[j]==firstfacePtr[j+1]-1)
                printf("Scala!\n");
                return 1;
        }
        if (firstfacePtr[0]==0)
            firstfacePtr[0]=13;
            bubble(firstfacePtr,size); /*bubble goes through an array 
                                         and put it in ascending order*/
    }

}

注:wFirstFace是一个包含 5 个整数的数组;size 是一个整数,它等于 5。我试图声明wFirstFace={0,1,2,3,4}以检查代码是否有效。然后,内部的“for”循环在一个循环后结束,函数返回一个 0,我什至不知道为什么或在哪里。我在这个凌乱的源代码中哪里出错了?

4

1 回答 1

2

我可以看到有几个大括号不匹配。

1 - 这将永远return 1;。你想把一个放在{ }最后else if吗?

    for(j=0;j<=size-2;j++)
    {
        if (firstfacePtr[j]!=firstfacePtr[j+1]-1 && i==0)
            break;
        else if (firstfacePtr[j]!=firstfacePtr[j+1]-1 && i==1)
            return 0;
        else if (j==3 &&firstfacePtr[j]==firstfacePtr[j+1]-1)
            printf("Scala!\n");
            return 1;
    }

2 - 你想为循环bubble()的所有迭代执行for(i=吗?还是只有当if (firstfacePtr[0]==0)是真的?

    if (firstfacePtr[0]==0)
        firstfacePtr[0]=13;
        bubble(firstfacePtr,size); /*bubble goes through an array and put it in ascending order*/
于 2011-12-29T21:30:55.683 回答