Я схожу с ума.Я пишу источник, который выбирает 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, и я даже не знаю, почему и где.Где я допустил ошибку в этом грязном исходном коде?