Kłopot z czyszczeniem strumienia wejściowego

0

Witam.

Mam problem ze strumieniem wejściowym.

Mam takie zadanie, otóż muszę podać trzy liczby i w tym mam podać w jednej jakiś znak lub słowo, które powinno zostać pominięte, jednak przy próbach wpisania np. "tak123" lub jakiejkolwiek litery od razu zrzuca mnie do końca programu.

Proszę o pomoc.

#include <iostream>
using namespace std;

int main()
{
	float a;
	float b;
	float c;
	
	cout << "Podaj liczbe a = ";
	cin >> a;
	cin.sync();
	cin.clear();
	cout << "Podaj liczbe b = ";
	cin >> b;
	cin.sync();
	cin.clear();
	cout << "Podaj liczbe c = ";
	cin >> c;
	cin.sync();
	cin.clear();
	cout << "Liczba a to = " << a;
	cout << " Wczytano?" << cin.good() << endl;
	cout << "Liczba b to = " << b; 
	cout << " Wczytano?" << cin.good() << endl;
	cout << "Liczba c to = " << c;
	cout << " Wczytano?" << cin.good() << endl;
	return 0;
}

Zdjęcie:

4169a505f8d0a.png

0

Najpierw clear(), później sync().

0

Dzięki wielkie za odpowiedź, lecz mam następny problem.

Gdy wpiszę np. tak123 to program zamiast wczytać same 123 lub odpowiedzieć, że nie potrafił tego wczytać, to pokazuje jakieś zwariowane liczby. Jak to naprawić?

Mój kod

#include <stdafx.h>
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
	float a,b,c;
    cout << "Podaj liczbe a = ";
	cin >> a;
	cin.clear();
	cin.sync();
	cout << "Podaj liczbe b = ";
	cin >> b;
	cin.clear();
	cin.sync();
	cout << "Podaj liczbe c = ";
	cin >> c;
	cin.clear();
	cin.sync();
	cout << "Liczba a to = " << a;
	cout << " Wczytano?" << cin.good() << endl;
	cout << "Liczba b to = " << b; 
	cout << " Wczytano?" << cin.good() << endl;
	cout << "Liczba c to = " << c;
	cout << " Wczytano?" << cin.good() << endl;
	system("PAUSE");
	return 0;
}

Zdjęcie:

Bez tytułu.png

0
while(true)
  {
   cout << "Podaj liczbe a = ";
   if(cin>>a) break;
   cin.clear();
   cin.sync();
   cout<<"Blond?"<<endl; // raczej blondynka
  }

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