Czy data jest świętem stałym
Kalendarz krok po kroku: święta - Podstawy C++ (C++)
Funkcja fixedHoliday przeszukuje tablice i zwraca numer święta albo -1, gdy to zwykły dzień. Jeden wyjątek: Wigilia jest dniem wolnym dopiero od 2025 roku, więc dla wcześniejszych lat funkcja jej nie uznaje. Funkcja check wypisuje wynik dla jednej daty.
#include <iostream>
using namespace std;
// swieta stale: dzien, miesiac i nazwa (bez polskich liter - konsola)
const int FIXED = 10;
int fixedDay[FIXED] = {1, 6, 1, 3, 15, 1, 11, 24, 25, 26};
int fixedMonth[FIXED] = {1, 1, 5, 5, 8, 11, 11, 12, 12, 12};
char fixedName[FIXED][28] = {"Nowy Rok", "Trzech Kroli", "Swieto Pracy",
"Swieto Konstytucji", "Wniebowziecie NMP",
"Wszystkich Swietych", "Swieto Niepodleglosci",
"Wigilia", "Boze Narodzenie", "Drugi dzien Swiat"};
// data jako 5.04 (miesiac zawsze dwiema cyframi)
void printDate(int d, int m) {
cout << d << "." << (m < 10 ? "0" : "") << m;
}
// numer swieta stalego w tablicy albo -1, gdy to zwykly dzien
int fixedHoliday(int d, int m, int y) {
for (int i = 0; i < FIXED; i++) {
if (fixedDay[i] == d && fixedMonth[i] == m) {
if (i == 7 && y < 2025) {
return -1; // Wigilia jest wolna od 2025 roku
}
return i;
}
}
return -1;
}
void check(int d, int m, int y) {
printDate(d, m);
cout << "." << y << ": ";
int i = fixedHoliday(d, m, y);
if (i == -1) {
cout << "zwykly dzien" << endl;
} else {
cout << fixedName[i] << endl;
}
}
int main() {
check(11, 11, 2026);
check(12, 11, 2026);
check(24, 12, 2024);
check(24, 12, 2026);
return 0;
}Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.
Wszystkie lekcje kursu Podstawy C++·Zaloguj się, aby zapisać postęp na koncie.