Witam,
od niedawna uczę się programowania w języku C. Zabrałam się za pisanie gry typu wisielec. Pętla "while" która sprawdza i ewentualnie podstawia litery do tablicy "finałowej" działa, chciałam jednak ograniczyć ilość podanych błędnie liter. W tym momencie jednak, przy liczeniu errorów występuje błąd - przy podaniu litery która faktycznie została wpisana bo znajduje się w haśle dodaje się jeden błąd, przy podaniu litery która nie znajduje się w haśle dodają się dwa błędy. Zupełnie nie wiem skąd pojawia się ten błąd.
Serdecznie proszę o pomoc, wyjaśnienie. :)
void gra(int j, char slowo[])
{
int powt = 1, errors = 0, traf, i;
char litera, wynik[j - 1];
printf("Twoje haslo sklada sie z %d liter\n\n", j);
for (i = 0; i < j;++i) {
wynik[i] = '_';
printf("%c ", wynik[i]);
}
printf("\n\n\n");
while (powt > 0) {
powt = 0;
printf("Podaj litere:");
litera = getchar();
system("cls");
traf = 0;
for (i = 0; i < j; ++i) {
if (wynik[i] == '_') {
if (litera == slowo[i]) {
traf = 1;
wynik[i] = slowo[i];
}
else
powt = powt + 1;
};
}
if (traf == 0) {
errors = errors + 1;
printf("errors: %d", errors);
}
znaki(j, wynik);
if (powt < 1) {
wygrana();
}
}
}