Problem z while
Ostatnio zmodyfikowano 2014-07-06 18:19
killermannnnn Temat założony przez niniejszego użytkownika |
Problem z while » 2014-07-05 20:45:12 Cześć, napisałem sobie taka funkcje która ma sprawdzać czy wpisany znak jest liczbą. Problem w tym że jak nie wpisze liczby to wywala mi cały czas zawartość petli i nie pyta o wprowadzenie liczby. Czemu int x, y;
cout << "Wprowadz pierwsza liczbe: ";
while( !( cin >> x ) ) { cout << "To nie jest liczba!"; cout << "Wprowadz pierwsza liczbe: "; cin >> x; }
I tutaj cały kod: #include <iostream> #include <windows.h> #include <ctype.h> #include <cstdio> #include <conio.h>
using namespace std;
int main() { for(;; ) { int x, y; cout << "Wprowadz pierwsza liczbe: "; while( !( cin >> x ) ) { cout << "To nie jest liczba!"; cout << "Wprowadz pierwsza liczbe: "; cin >> x; } cout << "Wprowadz druga liczbe: "; cin >> y; cout << "Wybierz jedn¹ z opcji: " << endl; cout << "1. Dodawanie." << endl; cout << "2. Odejmowanie." << endl; cout << "3. Dz=zielenie." << endl; cout << "4. Mnozenie." << endl; cout << "5. Zamknij program." << endl; char wybor; wybor = getch(); switch( wybor ) { case '1': { cout << "Wynik dodawania: " << x + y; cout << endl; break; } case '2': { cout << "Wynik odejmowania: " << x - y; cout << endl; break; } case '3': { cout << "Wynik dzielenia: " << x / y; cout << endl; break; } case '4': { cout << "Wynik mnozenia: " << x * y; cout << endl; break; } case '5': exit( 0 ); default: { cout << "Nie ma takiej opcji w menu !!!"; cout << endl; break; } } getchar(); getchar(); system( "cls" ); } }
|
|
pekfos |
» 2014-07-05 20:54:05 Nie czyścisz strumienia. |
|
killermannnnn Temat założony przez niniejszego użytkownika |
» 2014-07-06 10:40:08 Chodzi o cos takiego? while( !( cin >> x ) ) { cin.clear(); cout << "To nie jest liczba!"; cout << "Wprowadz pierwsza liczbe: "; cin >> x; }
Bo ciągle nie działa... |
|
Jacob99 |
» 2014-07-06 12:42:04 while( !( cin >> x ) ) { cout << "To nie jest liczba!"; cout << "Wprowadz pierwsza liczbe: "; cin >> x; cin.clear(); cin.sync(); }
Strumień czyści się po wczytywaniu. |
|
pekfos |
» 2014-07-06 13:51:45 while( !( cin >> x ) ) { cout << "To nie jest liczba!"; cout << "Wprowadz pierwsza liczbe: "; cin >> x; cin.clear(); cin.sync(); }
Strumień czyści się po wczytywaniu. |
Wytłumacz jeszcze, po co tam te drugie wczytywanie, które i tak nic nie wczyta.. |
|
Jacob99 |
» 2014-07-06 15:51:49 @Pekfos Ja nie ingerowałem w to co on napisał, tylko pokazałem jak to ma wyglądać, żeby działało. |
|
pekfos |
» 2014-07-06 18:19:40 To nie ma tak wyglądać. Chyba nie rozumiemy się, o czym mowa while( !( cin >> x ) ) { cout << "To nie jest liczba!"; cout << "Wprowadz pierwsza liczbe: "; cin >> x; cin.clear(); cin.sync(); }
|
Cały blok tej pętli jest 'po wczytaniu'. |
|
« 1 » |