Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Kłopot ze sprawdzeniem danych

Ostatnio zmodyfikowano 2018-04-28 21:10
Autor Wiadomość
chriskck98
Temat założony przez niniejszego użytkownika
Kłopot ze sprawdzeniem danych
» 2018-04-26 21:41:16
C/C++
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!
P-170835
pekfos
» 2018-04-26 21:43:46
Ten kod nie ma żadnego sensu.
P-170837
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.
P-170843
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.
P-170848
YooSy
» 2018-04-28 21:10:50
P-170860
« 1 »
  Strona 1 z 1