Funkcja sprawdzająca poprawność typu wczytywanych danych coś namieszała..

0

Witam, napisałem funkcję, w której użytkownik ma podać 4 cyfry. Wszystko działało prawidłowo do momentu, kiedy dodałem pętlę, która sprawdza poprawność typu wpisanych danych. W tym momencie program za każdym razem chce, aby podać mu 5 cyfr. Po podaniu piątej cyfry dopiero wykonują się dalsze funkcje. Wiecie co z tym można zrobić? ;)

 
void LatwyPoziom::wczytaj(int zgaduj[])
{
	int i;
	podaj:
	cout << "\n\nPodaj proponowane odpowiedzi: ";
	for (i = 0; i <= 3; i++)
		cin >> zgaduj[i];
	
	int zmienna;

	while (!(cin >> zmienna)) 
	{
		cout << "Bledny typ danych" << endl;
		cin.clear(); 
		cin.sync(); 
		goto podaj;
	}

	
	for (i = 0; i <= 3; i++)
	{
		if (zgaduj[i] > 9 || zgaduj[i] < 0)
		{
			cout << "Bledny zakres! Sprobuj ponownie!" << endl;
			goto podaj;
		}
	}
	

}
0

goto podaj; słabo mi...
http://4programmers.net/C/FAQ/Zabezpieczenie_przed_wpisywaniem_liter
Zrób sobie ładną funkcje która czyta ci tego inta i tej funkcji używaj.

0

Funkcję 'goto' mogę wyrzucić, ale to nic nie zmieni, bez niej program dalej wymaga wpisania piątej cyfry..

1

Bo chcesz 5 cyfr: cztery do tablicy zgaduj wpisujesz, a następnie do zmienna.

0

Dobra, działa. Wyrzuciłem tego cin'a do zgadywania i wrzuciłem tą funkcję sprawdzającą do pętli for.

1 użytkowników online, w tym zalogowanych: 0, gości: 1