#include <iostream>
#include <string>   //A getline függvényhez kell, a string enélkül is használható
#include <stdlib.h>

using namespace std;

int main() {
	int a;
	string s;

	/** /
	// 1. változat:
	// - A cin objektum hibaflagjének vizsgálatával
	// - kilép, ha hiba lépet fel
	//
	cout << "a = ";
	cin >> a;
	if (cin.fail()) {   // Ez is jo: if (!cin) {
		cout << "Nem egesz szam!" << endl;
		exit(1);
	}
	/**/

	/** /
	// 2. változat:
	// - Szöveg beolvasásával és átalakításával
	// - Ez csak az elso szokozig olvas.
	// - kilép, ha hiba lépett fel
	//
	cout << "a = ";
	cin >> s;
	a = atoi( s.c_str() );
	if (a == 0 && s != "0") {
		cout << "Nem egesz szam: " << s << endl;
		exit(1);
	}
	/**/

	/** /
	// 3. változat:
	// - Szöveg beolvasásával és átalakításával
	// - Beolvassa az egész beírt szöveget
	// - kilép, ha hiba lépet fel
	//
	cout << "a = ";
	cin.ignore(1000, '\n');
	getline(cin, s);
	a = atoi( s.c_str() );
	if (a == 0 && s != "0") {
		cout << "Nem egesz szam: " << s << endl;
		exit(1);
	}
	/**/

	/** /
	// 4. változat:
	// - cin objektum hibaflagjének vizsgálatával
	// - addig olvas be, amíg nem sikerül helyesen megadnia
	//
	bool hiba;
	do {
		cout << "a = ";
		cin >> a;
		hiba = cin.fail();
		if (hiba) {
			cin.clear();
			cin.ignore(1000, '\n');
		}
	} while ( hiba );
	/**/

	/** /
	// 5. változat:
	// - Szöveg beolvasásával és átalakításával
	// - Ez csak az elso szokozig olvas.
	// - addig olvas be, amíg nem sikerül helyesen megadnia
	//
	do {
		cout << "a = ";
		cin >> s;
		cin.ignore(1000, '\n'); //Opcionalis, de nelkule csak az elso szokozig olvas
		cin.clear();	//Opcionalis
		a = atoi( s.c_str() );
	} while (a == 0 && s != "0");
	/**/

	/** /
	// 6. változat:
	// - Szöveg beolvasásával és átalakításával
	// - Beolvassa az egész beírt szöveget
	// - addig olvas be, amíg nem sikerül helyesen megadnia
	//
	//cin.ignore(1000, '\n');   //Ha elotte van beolvasas, es az ENTERT ki kell venni a bufferbol
	do {
		cout << "a = ";
		getline(cin, s);
		a = atoi( s.c_str() );
	} while (a == 0 && s != "0");
	/**/

	/** /
	// 7. változat:
	// - Elöfeltétel ellenörzéssel
	while (a == 0 && s != "0" && a<1 && a>5)
	/**/

	/** /
	// 8. változat:
	// - ?
	/**/

	cout << a << endl;

	return 0;
}
