Instrukcja wyboru - switch case

0

Cześć,
mam polecenie o następującej treści:
Napisz program holidays, który wczytuje ze standardowego wejścia numer miesiąca i dnia, na przykład
8 i 15 dla piętnastego sierpnia. Jeżeli tego dnia wypada święto stałe wolne od pracy, program wypisuje na
standardowe wyjście angielska nazwę święta. W przeciwnym razie wypisuje słowa ordinary day. Program
załącza tylko plik nagłówkowy iostream.
Przykładowe wykonanie
In: 8 15
Out: armed forces day
Uwaga Użyj instrukcji wyboru.

Napisałem program tak jak mi się wydawało, że będzie działał ale jednak nie działa.
Mianowicie po podaniu na wejście liczb np. 8 oraz 15 to oprócz wypisania armed forces day wykonuje się także kod po polecaniu default. W przypadku liczb 1 i 1 wypisuje się nowy rok, święto pracy, wszystkich świętych oraz kod po default. Rozumiem, że program po sprawdzeniu pierwszego switch'a i wykonaniu przeskakuje do kolejnych jednak nie rozumiem dlaczego i nie potrafię znaleźć na to rady. Myślałem nad przeliczeniem miesiąca i dnia na dany dzień w roku jednak z powodu lat przestępnych nie byłoby to idealne rozwiązanie. Będę bardzo wdzięczny za wszelkie wskazówki.

#include <iostream>

int main()
{
    int month, day;

    std::cout << "Enter the month and day number: ";
    std::cin >> month >> day;

    switch (month)
    {
    case 1:
        switch (day)
        {
        case 1:
            std::cout << "new year" << std::endl;
            break;
        case 6:
            std::cout << "epiphany" << std::endl;
            break;
        }
    case 5:
        switch (day)
        {
        case 1:
            std::cout << "international workers' day" << std::endl;
            break;
        case 3:
            std::cout << "3 may constitution day" << std::endl;
            break;
        }
    case 8:
        switch (day)
        {
        case 15:
            std::cout << "armed forces day" << std::endl;
            break;
        }
    case 11:
        switch (day)
        {
        case 1:
            std::cout << "all saints' day" << std::endl;
            break;
        case 11:
            std::cout << "national independence day" << std::endl;
            break;
        }
    case 12:
        switch (day)
        {
        case 25:
            std::cout << "christmas" << std::endl;
            break;
        case 26:
            std::cout << "christmas" << std::endl;
            break;
        }
    default:
        std::cout << "ordinary day" << std::endl;
        break;

    }
}

1

W zewnętrznym switchu nie masz instrukcji break

0

Dziękuję Ci bardzo. Nie zwróciłem na to uwagi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1