Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zadanie z "if .. else" i pętlą while(true), sprawdzanie poprawności wpisanych danych

Ostatnio zmodyfikowano 2015-02-17 12:24
Autor Wiadomość
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!


C/C++
#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;
        }
       
    }
}
 
P-126681
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
P-126695
p0p0
Temat założony przez niniejszego użytkownika
» 2015-02-17 12:24:37
Dzięki wilkoo13 za wytłumaczenie :)
P-126707
« 1 »
  Strona 1 z 1