Twój kod - poza tym że fatalnej jakości, jak słusznie zauważył @narbej - to ifowanie wszystkich możliwych przypadków. Problem polega na tym, że tymi przypadkami nie są bool poker(), bo prawidłowy kod takiej funkcji to oczywiście:
bool poker(const int* val, const int* col)
{
return (strit(val) && kolor(col));
}
a nie:
void poker()
{
if((((karty[0]+1==karty[1])&&(karty[0]+2==karty[2])&&(karty[0]+3==karty[3])&&(karty[0]+4==karty[4]))&&(kolor()))||
((karty[0]==2)&&(karty[1]==3)&&(karty[2]==4)&&(karty[3]==5)&&(karty[4]==14))&&(kolor()))
{
kasa(1000);
}
else kareta();
}
co zaznaczono jasno w artykule na polskojęzycznej Wikipdii, do którego odsyła treść zadania: “(Poker to) Strit w kolorze.”
Wykonałem kilkanaście testów, ale nie znalazłem błędu. Wątpię, aby był “duży” - najpewniej pominąłeś jeden przypadek, jak to z ifowaniem bywa. Możesz przepisać kod i zrobić zadanie “porządnie”, dzięki czemu zapewne pomoc forumowiczów będzie zbędna. Możesz też poczekać na kogoś, kto będzie miał na prawdę dużo czasu by czytać Twój kod i go testować.
As, król, dama, jopek, 10, 9, 8, 8, 6, 5, 4, 3, 2 —> 13 kart.
Serce, karo, żółądź, wino -> 4 kolory.
Łącznie 4 * 13 = 52 karty.
Pierwszą kartę możesz wybrać na 52 sposoby, drugą na 51, …
Czyli 52 * 51 * 50 * 49 * 48 przypadków.
Przy takim kodzie nie można testować pojedynczych funkcji tylko od razu całość więc możesz wygenerować te przypadki i testować albo przepisać. Albo liczyć na szczęście - jak znajdziesz (ktoś wskaże) tej jeden nieprawidłowy if to pewnie zadanie przejdzie 