C++: Adatbekérés konzolon
Programozással kapcsolatos cikkek / C, C++ (1637 katt)
A C++ programozás tanulása során gyakran felmerül az a feladat, hogy egy Win32 Console Application-ben kérjünk be adatokat egy adott végjelig. Egy lehetséges példa: olvassunk be számokat addig, amíg a felhasználó 0-t nem ír be, majd írjuk ki a számok összegét.
Erre egy lehetséges megoldás az alábbi program:
#include <iostream>
using namespace std;
int main()
{
int sum = 0;
int szam;
do
{
cout << "A szam: ";
cin >> szam;
sum += szam;
} while (szam != 0);
cout << "A szamok osszege: " << sum << endl;
return 0;
}
Ezzel a megoldással az a gond, hogy ha véletlenül nem számot írunk be, akkor a program végtelen ciklusba kerül, és nem tudunk újabb számokat begépelni. A problémát az alábbi módosított programmal kerülhetjük ki:
#include <iostream>
using namespace std;
int main()
{
int sum = 0;
int szam;
do
{
cout << "A szam: ";
cin >> szam;
if (cin.fail())
{
cout << "Hibas adat!" << endl;
fflush(stdin);
cin.clear();
}
else
{
sum += szam;
}
} while (szam != 0);
cout << "A szamok osszege: " << sum << endl;
return 0;
}
Update (2016.04.06.):
A Visual Studio 2015 használata esetén azt tapasztaltam, hogy a fent leírt fflush(stdin)-es megoldás nem működik. Ehelyett a következő módszert lehet használni:
if (cin.fail())
{
cin.clear();
cin.ignore(numeric_limits<int>::max(), '\n');
}
További infó:
https://msdn.microsoft.com/en-us/library/3w23zf49.aspx
Előző oldal | Kapitány |