pelta do while

P7
  • Rejestracja:około 10 lat
  • Ostatnio:około 10 lat
  • Postów:7
0

Napisalem program ktory sprawdza czy uzytkownik wprowdzil wartosc int. Zalozenie jest takie: jesli jest int program sie konczy, jezeli nie, wraca na poczatek petli w celu ponownego wpisania danej.
Nie wiem dlaczego w przypadku wpisaniu wartosci np string. Program sie zapetla - nie moge wpisac poprawnej wartosci int.

Kopiuj
#include <iostream>

using namespace std;


int liczba;

int main()
{
   do
    {
     cin.sync();
     cin.clear();

     cout << "Podaj liczbe: "<<endl ;
     cin >> liczba;


    } while (cin.good() ==0) ;


    return 0;
}
 

Dlaczego?

spartanPAGE
  • Rejestracja:około 12 lat
  • Ostatnio:około 19 godzin
0
Kopiuj
#include<iostream>
#include<limits>
using namespace std;
int main(){
    cout << "Enter an int: ";
    int x = 0;
    while(!(cin >> x)){
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        cout << "Invalid input.  Try again: ";
    }
    cout << "You enterd: " << x << endl;        
    return 0;
}
edytowany 1x, ostatnio: spartanPAGE
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Zabezpieczenie przed wpisywaniem liter
ten art wisi już 5 lat a nadal niektórzy z uporem maniaka piszą ten kod od nowa... ;]


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
spartanPAGE
ja go znajduję w internecie
P7
  • Rejestracja:około 10 lat
  • Ostatnio:około 10 lat
  • Postów:7
0

Ale dlaczego moja petla nie czeka na ponowne wpisanie liczby?
Co zrobilem źle?

spartanPAGE
  • Rejestracja:około 12 lat
  • Ostatnio:około 19 godzin
0

Brak cin.ignore

MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:17 minut
1
polsky77 napisał(a):

Ale dlaczego moja petla nie czeka na ponowne wpisanie liczby?
Co zrobilem źle?

Odwrotna kolejność: sync, clear


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
P7
Dzieki MarekR22. To rozwiazalo problem.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.