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;
}
}