PROBLEM Z WHILE
Ostatnio zmodyfikowano 2012-09-03 11:53
Kalik17 Temat założony przez niniejszego użytkownika |
PROBLEM Z WHILE » 2012-08-21 00:54:28 witam otóż mam problem z pętlą otóż chciałbym zrobić aby ten program przechodził dalej po wpisaniu tylko liczby a po wpisaniu jakiejś innej wartości tekstu litery itp. zaokrąglał się od początku. myślałem ze to będzie działać poprawnie ale po skompilowaniu i wpisaniu litery zamiast zrobić pętle i poprosić o wpisanie poprawnej liczby to wypisuje jeden pod drugim : Podaj pierwszą liczbe. Bardzo proszę o pomoc co robię nie tak.
#include <iostream> int main() { int liczba; do { std::cout << "Podaj liczbe " << std::endl; std::cin >> liczba; } while( std::cin.good() != 1 ); std::cout << "liczba =" << liczba; return 0; } |
|
DejaVu |
» 2012-08-21 01:08:22 |
|
kubek3898 |
» 2012-08-22 20:17:17 Po pierwsze. Po każdym obiegu pętli czyść ekran. Najlepiej funkcją system("cls") jeśli używasz Windowsa lub system("clear") jeśli Linuxa. Nie wiem czy dobrze zrozumiałem temat, ale chodzi o to by zabezpieczyć przed wprowadzaniem liter. A więc dodaj do pętli sprawdzanie: if( !cin.good() ) { cin.clear(); cin.sync(); } A warunek kończący pętle to przykładowa każda liczba 0. |
|
Cansisti |
» 2012-09-03 11:53:16 Po pierwsze - zadeklaruj sobie wcześniej jakiegoś bool-a i zaraz po instrukcji std::cin zapisz do niego std::cin.good() a potem wyczyść bufor np.
bool czyJestDobrze; do { std::cout << "Podaj liczbe " << std::endl; std::cin >> liczba; czyJestDobrze = std::cin.good(); //O ile użytkownik wpisał liczbę, wartość będzie true, odwrotnie - false cin.clear(); cin.sync(); } while ( !czyJestDobrze ); // Jeśli będzie false, pętla się powtórzy.
|
|
« 1 » |