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.