Nie muszę pewnie dodawać, że jestem mocno początkujący, a szczególnie w C. Probuję zrobić Wisielca w C. Głowna cześc programu ma polegać na tym, że tworzę tablice znaków ze słowem do odgadnięcia i wypelniam ją "podłogami" (znak "_"). Potem jest pętla while, która wykonuje sie do momentu, do kiedy liczba wpisanych znaków jest mniejsza od długości wyrazu. Program pyta użytkownika o literę i wczytuje ją. W tej pętli jest pętla for przeszukująca tablice z naszym słowem, sprawdzająca czy podana przez użytkownika litera zgadza się, jeśli tak to jest ona wpisywana na to samo miejsce w nowej tablicy, która wczesniej była wypełniona samymi podłogami. To wszystko wykonywało się poprawnie. Problem pojawia się, kiedy muszę śledzić ilość błędnie wpisanych liter. Zrobiłem prowizoryczną zmienną miss mającą wartości 1 lub 0 (odpowiedniki logicznych wartosci bool'owskich). Miało to działać tak, że jeśli użytkownik trafi literę to zmienia ona wartośc na 0. Wcześniej miała przypisaną wartość 1. Jeśli użytkownik nie trafi, wartośc nie zmienia się, czyli zostaje 1. Po obejściu pętli był if, który miał zwiększać liczbę błędów o 1, jeśli wartosc miss jest 1.
Niestety, kiedy wpiszę dobrą literę liczba błędów zwiększa się o 1, a jeśli złą to o 2. Wklejam fragment kodu, będzie tam pare linijek "niepotrzebnych", które jednak są potrzebne do całości działania programu.
#include <stdio.h>
#include <math.h>
struct randomWord
{
char word[20];
int length;
} w1 = { "menstruacja", 11 }, w2 = { "emancypacja", 11 }, w3 = { "onomatopeja", 11 },
w4 = { "infrastruktura", 14 };
void hangMan()
{
int wordIndex = 0;
srand(time(NULL));
wordIndex = (rand() % 1) + 1;
char newWord[20];
char podloga = '_';
int liczbaLiterWpisanych = 0;
int i;
char letter;
int nietrafione = 0;
int miss = 0;
/* Zape³nianie tablicy z odpowiedzi¹ "pod³ogami" i wypisanie tej tablicy */
for (i = 0; i < w1.length; i++)
{
newWord[i] = podloga;
printf(" %c ", newWord[i]);
}
while (liczbaLiterWpisanych < w1.length)
{
if (miss == 1)
nietrafione++;
printf("\nLiczba nietrafionych: %i", nietrafione);
miss = 1;
printf("\nPodaj litere : ");
scanf("%c", &letter);
system("cls");
for (i = 0; i < w1.length; i++)
{
if (w1.word[i] == letter)
{
miss = 0;
newWord[i] = letter;
liczbaLiterWpisanych++;
}
}
for (i = 0; i < w1.length; i++)
{
printf(" %c ", newWord[i]);
}
}
}
int main()
{
hangMan();
return 0;
}
EDIT: kod sformatowany przy pomocy http://format.krzaq.cc/