Poziom 2, rozdział 15, zadanie 1. Pętla do ... while
Ostatnio zmodyfikowano 2019-01-09 21:31
darnok9 Temat założony przez niniejszego użytkownika |
Poziom 2, rozdział 15, zadanie 1. Pętla do ... while » 2019-01-09 21:12:01 Cześć. Na wstępie zaznaczę, że jestem początkujący jeśli chodzi o programowanie. Sporo czasu się głowiłem i przeglądałem inne tematy dotyczące zadania 1 w rozdziale 15, ale żaden nie zaspokoił mnie w stu procentach. Napisałem kod, który działa poprawnie, oto on: #include <iostream> #include <cstdlib> using namespace std;
int liczba;
int main() { cout << "Podaj liczbe: "; cin >> liczba; if( cin.fail() ) { do { cin.clear(); cin.ignore( 50, '\n' ); cout << "Podaj liczbe: "; cin >> liczba; } while( cin.fail() ); } cout << liczba << endl; system( "pause" ); return 0; }
Czy ten kod jest napisany poprawnie? Czy istnieje jakiś sposób, aby pozbyć się pierwszych instrukcji oraz ifa, zamykając wszystko w pętli? Gdyby je po prostu usunąć, na początku program nie wyświetla komunikatu "Podaj liczbe" (zapewne z powodu użycia cin.clear lub cin.ignore (?)). Proszę o sugestię co do możliwego uproszczenia kodu. |
|
pekfos |
» 2019-01-09 21:24:56 Tak możesz uniknąć duplikacji: #include <iostream> #include <limits> using namespace std;
int main() { int liczba; do { if( cin.fail() ) { cin.clear(); cin.ignore( numeric_limits < streamsize >::max(), '\n' ); } cout << "Podaj liczbe: "; cin >> liczba; } while( cin.fail() ); cout << liczba << endl; return 0; } |
|
darnok9 Temat założony przez niniejszego użytkownika |
» 2019-01-09 21:31:06 Dzięki, to mi w zasadzie wystarcza :) |
|
« 1 » |