• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ przedział liczb

Object Storage Arubacloud
0 głosów
8,859 wizyt
pytanie zadane 22 października 2016 w C i C++ przez hangus Początkujący (290 p.)
Witam przerabiam odcinek 6 dotyczący switcha i nie mam pomysłu jak by to zrobić żeby zapętlić pytanie dotyczące miesiąca jeżeli ktoś wpisze niepoprawny miesiąc np gdy wpiszę 13 to chcę żeby zapytało jeszcze raz o który miesiąc chodzi z przedziału 1-12.

#include <iostream>

using namespace std;

int miesiac,rok;

int main()
{

    cout << "Podaj numer miesiaca (1-12): ";
    cin>>miesiac;

    switch (miesiac)
    {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        cout <<"Ten miesiac ma 31 dni"<<endl;
    break;

    case 4:
    case 6:
    case 9:
    case 11:
        cout <<"Ten miesiac ma 30 dni";

    break;

    case 2: cout <<"Podaj rok: "; cin>>rok;
            if (((rok%4==0)&&(rok%100!=0)) || (rok%400==0))
                cout <<"Ten miesiac ma 29 dni"<<endl;
            else
                cout <<"Ten miesiac ma 28 dni"<<endl;
    default: cout <<"Nie ma takiego miesiaca"<<endl;
    }

    return 0;
}
komentarz 22 października 2016 przez DragonCoder Nałogowiec (36,500 p.)
Najlepiej w petle, lub funkcje, ja uzywam wlasnych funkcje i w defaul daje nazwe funkcji i zawsze dziala, lub petla z bool

2 odpowiedzi

0 głosów
odpowiedź 22 października 2016 przez Myśliwy Gaduła (3,080 p.)
wybrane 22 października 2016 przez hangus
 
Najlepsza

Mam nadzieję, że zrozumiesz tę pętlę, dodałem też break; po case 2:

#include <iostream>

using namespace std;

int miesiac,rok;

int main()
{

    cout << "Podaj numer miesiaca (1-12): ";
    do {	
	    cin>>miesiac;
	
	    switch (miesiac)
	    {
	    case 1:
	    case 3:
	    case 5:
	    case 7:
	    case 8:
	    case 10:
	    case 12:
	        cout <<"Ten miesiac ma 31 dni"<<endl;
	    break;
	
	    case 4:
	    case 6:
	    case 9:
	    case 11:
	        cout <<"Ten miesiac ma 30 dni";
	
	    break;
	
	    case 2: cout <<"Podaj rok: "; cin>>rok;
	            if (((rok%4==0)&&(rok%100!=0)) || (rok%400==0))
	                cout <<"Ten miesiac ma 29 dni"<<endl;
	            else
	                cout <<"Ten miesiac ma 28 dni"<<endl;
	            break;
	    default: cout <<"Nie ma takiego miesiaca"<<endl;
	    }
	} while (miesiac<1 || miesiac>12);

    return 0;
}

 

0 głosów
odpowiedź 22 października 2016 przez plkpiotr Stary wyjadacz (12,420 p.)
edycja 22 października 2016 przez plkpiotr

Jeżeli użytkownik wpisze niepoprawne dane (nieprawidłowy format danych np. liczbę zmiennoprzecinkową, czy typ znakowy lub liczbę różną od wskazanego zakresu) to uruchomi się pętla while, która będzie wykonywać się dopóki nie otrzyma prawidłowych danych jakie określa warunek.

cout << "Podaj numer miesiaca (1-12): ";
cin >> miesiac;
while (!cin.good() || miesiac < 1 || miesiac > 12) {
    cout << "Sprobouj ponownie: ";
    cin.clear();
    cin.ignore(100, '\n');
    cin >> miesiac;
}

Wystarczy wstawić do Twojego kodu w zaznaczonym przeze mnie miejscu ; )

Podobne pytania

0 głosów
0 odpowiedzi 386 wizyt
0 głosów
1 odpowiedź 1,646 wizyt
pytanie zadane 10 czerwca 2015 w C i C++ przez szymonn7 Początkujący (350 p.)
0 głosów
3 odpowiedzi 412 wizyt
pytanie zadane 4 maja 2015 w PHP przez SebastianGomularz Dyskutant (9,370 p.)

92,620 zapytań

141,474 odpowiedzi

319,813 komentarzy

62,004 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...