Zadanie z "if .. else" i pętlą while(true), sprawdzanie poprawności wpisanych danych
Ostatnio zmodyfikowano 2015-02-17 12:24
p0p0 Temat założony przez niniejszego użytkownika |
Zadanie z "if .. else" i pętlą while(true), sprawdzanie poprawności wpisanych danych » 2015-02-16 20:25:29 Witam! Ćwiczę if else, jednak nie potrafię zrobić pętli (bez cin.sync i cin.clear - bo jeszcze tego nie rozumiem), żeby przy wpisaniu litery zamiast liczby znów zapytało od nowa o nr miesiąca. Będę wdzięczny za pomoc! #include <iostream> #include <stdio.h> #include <cstdlib> #include <conio.h>
using namespace std;
int nrmiesiaca;
int main() { while( true ) { cout << "podaj nr miesiaca" << endl; cin.sync(); if( cin >> nrmiesiaca ) { switch( nrmiesiaca ) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: cout << "ten miesiac ma 31 dni" << endl << endl; break; case 4: case 6: case 9: case 11: cout << "ten miesiac ma 30 dni" << endl << endl; break; case 2: int rok; cout << "podaj rok: " << endl << endl; cin >> rok; if(( rok % 4 == 0 && rok % 100 != 0 ) || rok % 400 == 0 ) cout << "ten miesiac ma 29 dni" << endl << endl; else cout << "ten miesiac ma 28 din" << endl << endl; } } else { cin.clear(); cout << "to nie jest liczba" << endl << endl; } } }
|
|
wilkoo13 |
» 2015-02-17 07:06:04 Kod jest poprawny. Bez cin i clear nie da się tego zrobić, bo po wpisaniu złych danych do typu którego ich nie może odczytać, np, litery do int, w tedy bufor jest blokowany i trzeba użyć tych komend. To tak w skrócie |
|
p0p0 Temat założony przez niniejszego użytkownika |
» 2015-02-17 12:24:37 Dzięki wilkoo13 za wytłumaczenie :) |
|
« 1 » |