Прототип покерного софта на С, проблемы с функцией выяснения стритов - PullRequest
0 голосов
/ 30 декабря 2011

Я схожу с ума.Я пишу источник, который выбирает 5 покерных карт из перемешанной колоды и распознает, есть ли пара, двойная пара, трис и так далее.Тем не менее, функции, которые занимаются поиском стрита, доставляют мне трудности.Мне пришлось переписать это, потому что я не учел до того факта, что туз может иметь значение 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 целых чисел;размер - целое число, и он равен 5. Я попытался объявить wFirstFace={0,1,2,3,4}, чтобы проверить, работает ли код или нет.Затем внутренний цикл for завершается после одного цикла, и функция возвращает 0, и я даже не знаю, почему и где.Где я допустил ошибку в этом грязном исходном коде?

1 Ответ

2 голосов
/ 30 декабря 2011

Я вижу пару несоответствий скобок.

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*/
...