Rozdział 15, zadanie domowe
Ostatnio zmodyfikowano 2015-07-12 22:21
Eryk Temat założony przez niniejszego użytkownika |
Rozdział 15, zadanie domowe » 2015-06-25 00:09:36 Napisz program, który wczyta liczbę, a następnie wypisze ją na ekranie. Zabezpiecz przed wczytaniem nieprawidłowej liczby. Wykorzystaj do tego celu wiedzę z jednego z poprzednich rozdziałów. Sposób działania programu: 1. Podaj liczbę 2. Jeżeli błąd, wróć do kroku 1. 3. Wypisz liczbę, która została podana. Mój kod: #include <iostream> using namespace std; int main() { int liczba; cout << "Podaj liczbe: "; cin >> liczba; if( cin.fail() ) do { cout << "Sprobuj ponownie: "; cin >> liczba; } while( cin.good() ); if( cin.good() ) cout << "Podana liczba to: " << liczba; return 0; } Problem tkwi w tym, że jeśli wprowadzę literę (przykładowo 'a') to program przy podaniu ponownie liczby, zamknie się. Próbowałem też utworzyć drugą zmienną, ale nadal to samo. #include <iostream> using namespace std; int main() { int liczba, nowa_liczba; cout << "Podaj liczbe: "; cin >> liczba; if( cin.fail() ) do { cout << "Sprobuj ponownie." << endl; cout << "Podaj liczbe: "; cin >> nowa_liczba; } while( cin.good() ); if( cin.good() ) cout << "Podana liczba to: " << liczba; return 0; } |
|
pekfos |
» 2015-06-25 00:15:37 |
|
Eryk Temat założony przez niniejszego użytkownika |
» 2015-06-25 00:43:22 Udało się. #include <iostream> using namespace std; int main() { int liczba; cout << "Podaj liczbe: "; cin >> liczba; cin.fail(); if( cin.fail() ) do { cin.clear(); cin.sync(); cout << "Sprobuj ponownie: "; cin >> liczba; } while( !cin.good() ); if( cin.good() ) cout << "Podana liczba to: " << liczba; return 0; }
|
|
JMII89 |
» 2015-06-25 08:58:42 Wiesz , że cin.good() zwraca true jeśli wczytywanie liczby się powiodło a cin.fail() zwraca true gdy się nie powiodło ? To na co tam pchasz przed tą pętlą tego ifa ? |
|
Eryk Temat założony przez niniejszego użytkownika |
» 2015-06-27 11:52:57 Tak będzie poprawniej? #include <iostream> using namespace std; int main() { int liczba; cout << "Podaj liczbe: "; cin >> liczba; while( cin.fail() ) { cin.clear(); cin.sync(); cout << "Podaj jeszcze raz!"; cin >> liczba; } cout << "Podana liczba to: " << liczba << endl; return 0; } |
|
Elefant |
Kod » 2015-07-12 22:21:41 #include <iostream>
using namespace std;
int main() { int liczba; cout << "Podaj liczbe: "; cin >> liczba; if( cin.fail() ) do { cin.clear(); cin.sync(); cout << "Podaj jeszcze raz: "; cin >> liczba; } while( cin.fail() ); cout << "Podana liczba to: " << liczba; } ten jest chyba okej? |
|
« 1 » |