Pętla do ... while | lekcja 15 | zadanie1
Ostatnio zmodyfikowano 2017-08-20 11:48
deco Temat założony przez niniejszego użytkownika |
Pętla do ... while | lekcja 15 | zadanie1 » 2017-08-20 01:03:44 Cześć, siedzę nad tym już chwile.. nie wiem dlaczego cały czas gdy wpisze bledną liczbę program cały czas wyświetla "podałeś liczbę: ". Jakieś sugestie?
#include <iostream> using namespace std;
int main() { int petla; do{ int liczba; cout << "podaj liczbe: "; cin >> liczba; bool sukces = cin.good(); if (sukces == 1) { cout << liczba << endl; petla=1; } else { petla=0; } }while(petla < 1); return 0; }
|
|
Kinexity |
» 2017-08-20 01:21:09 #include <iostream> #include <limits> using namespace std;
int main() { int liczba; do { cin.ignore( numeric_limits < streamsize >::max() ); cin.clear(); cout << "podaj liczbe: "; cin >> liczba; } while( cin.fail() ); cout << liczba << endl; return 0; }
Masz tutaj krótszy kod. Musisz zawsze wstawiać czyszczenie strumienia |
|
deco Temat założony przez niniejszego użytkownika |
» 2017-08-20 01:25:54 A da sie jakos zmodyfikowac ten moj zeby dzialal? Jak wstawie czyszczenie to zadziala? |
|
Kinexity |
» 2017-08-20 01:34:38 No to właśnie wstawiłem zmodyfikowany kod. |
|
deco Temat założony przez niniejszego użytkownika |
» 2017-08-20 01:38:15 Sprawdzałeś go? Skopiowałem i nie kończy mi pętli, cały czas moge podawać liczby albo znaki |
|
deco Temat założony przez niniejszego użytkownika |
» 2017-08-20 01:43:23 #include <iostream> #include <limits> using namespace std;
int main() { int petla; do{ cin.clear(); cin.sync(); int liczba; cout << "podaj liczbe: "; cin >> liczba; bool sukces = cin.good(); std::cin.clear(); std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' ); if (sukces == 1) { cout << liczba << endl; petla=1; } else { petla=0; } }while(petla < 1); return 0; }
Teraz zadziałało:) |
|
Kinexity |
» 2017-08-20 01:49:45 Nie używaj cin.sync() do czyszczenia strumienia. |
|
karambaHZP |
» 2017-08-20 08:23:22 |
|
« 1 » 2 |