Pętla do..while. Komunikat o konieczności powtórzenia pętli.

1

Witam. Napisałem grę MasterMind, ale mam dość prosty problem, którego nie potrafię rozwiązać dot. mechanizmu kontroli błędów. W grze w trakcie 10 rund trzeba odgadnąć kod złożony z 4 cyfr. Nie wiem jak napisać pętlę, która po wczytaniu nieprawidłowej danej zakomunikuje błąd. Funkcja wygląda tak:

void MasterMind::wczytaj(int zgaduj[])
{
	int i;
	do
	{
		cout << "Podaj proponowane odpowiedzi: ";
		for (i = 0; i <= 3; i++)
			cin >> zgaduj[i];
	} while (zgaduj[0] > 9 || zgaduj[1] > 9 || zgaduj[2] > 9 || zgaduj[3] > 9);  
}

Mam 2 pytania. Jedno jest takie, gdzie umieścić cout'a, który poinformuje, o wpisaniu niepoprawnych danych i powtórzeniu wczytywania?
Drugie dot. sytuacji, w której dane wprowadzane są po spacji. Jeśli oddziele je Enterem to wczytają się 4 cyfry, ale jeśli zrobię to spacją, to można wczytać ich dużo więcej. Jak to sprawdzić i wyświetlić również komunikat o błędzie?

2

http://4programmers.net/C/FAQ/Zabezpieczenie_przed_wpisywaniem_liter

tu masz zabezpieczenie przed literami

jak wczytasz zmienna (zrob sobie to w osobnej funkcji... bedzie najlepiej) to sprawdz czy jest wieksza od -1 i mniejsza od 10 jezeli tak to zwroc ja jezeli nie. Po pros o wczytanie jeszcze raz (tu masz odpowiedz na pierwsze pytanie)

Dam Ci prosta odpowiedz na drugie pytanie (bo mozna to zrobic inaczej, ale...). Moze niech wczytac nawet 20 liczb po spacji. Po prostu po kazdym wczytaniu czysc bufor (masz w pierwszym linku jak to zrobic) i nie beda te nastepne liczby wisiec ;)

0

Mhm.. dzięki wielkie! ;)

1

Może to cię zainteresuje: http://4programmers.net/Forum/1100492

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