Kłopot ze sprawdzeniem danych
Ostatnio zmodyfikowano 2018-04-28 21:10
chriskck98 Temat założony przez niniejszego użytkownika |
Kłopot ze sprawdzeniem danych » 2018-04-26 21:41:16 int pop() { int a; do { cin.ignore(); cin.clear(); cin.sync(); cin >> a; if( isalpha( a ) ) { cin.ignore(); cin.clear(); cin.sync(); cin >> a; } } while( !isdigit( a ) || a <= 0 ); return a; }
Witam, mam zagwozdkę z wpisywaniem liczb do tablicy, np. wpisze 1a lub sa to wyskakuje błąd. Z metodą cin.fail() nie działa za bardzo i sam już nie wiem jak to rozwiązać. Będę wdzięczny za pomoc! |
|
pekfos |
» 2018-04-26 21:43:46 Ten kod nie ma żadnego sensu. |
|
chriskck98 Temat założony przez niniejszego użytkownika |
» 2018-04-27 21:46:43 O to chodzi, że wpisujac podane liczby program nie prosi o nowe tylko sie zatrzymuje i nie wiem za bardzo jak to rozwiazac. A probuje z kilkoma metodami, bo nie mam za duzo wprawy w programowaniu. |
|
pekfos |
» 2018-04-28 16:09:54 1. int to liczba, z definicji. Twoje sprawdzanie, czy jest tam cyfra, czy litera, nie robi tego, czego oczekujesz. 2. Nie używaj sync(). 3. ignore() nic nie zrobi, jeśli strumień jest w stanie błędu, więc clear() musi być użyte wcześniej. 4. Nie używaj ignore(), jeśli nie wykryłeś błędnych danych w strumieniu. To jest operacja odczytu, więc zatrzyma program w oczekiwaniu na dane, jeśli nic nie ma do odczytania. 5. ignore() bez żadnych argumentów usuwa ze strumienia tylko 1 znak. |
|
YooSy |
» 2018-04-28 21:10:50 |
|
« 1 » |