algorytm.org

Implementacja w C/C++



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Wyznaczanie daty Wielkanocy - algortym Gaussa - Implementacja w C/C++
Ocena użytkownikóww: *****  / 7
SłabyŚwietny
Nadesłany przez Tomasz Lubiński, 19 lutego 2008 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

dw.c:
// Obliczanie daty wielkanocy
// www.algorytm.org
// (c) 2008 by Tomasz Lubinski


#include "stdio.h"

/* Pobierz wartosc A z tabeli lat */
int getA(int rok)
{
   if (rok <= 1582)
   {
      return 15;
   }
   if (rok <= 1699)
   {
      return 22;
   }
   if (rok <= 1899)
   {
      return 23;
   }
   if (rok <= 2199)
   {
      return 24;
   }
   if (rok <= 2299)
   {
      return 25;
   }
   if (rok <= 2399)
   {
      return 26;
   }
   if (rok <= 2499)
   {
      return 25;
   }
   return 0; /* poza zakresem */
}

/* Pobierz wartosc B z tabeli lat */
int getB(int rok)
{
   if (rok <= 1582)
   {
      return 6;
   }
   if (rok <= 1699)
   {
      return 2;
   }
   if (rok <= 1799)
   {
      return 3;
   }
   if (rok <= 1899)
   {
      return 4;
   }
   if (rok <= 2099)
   {
      return 5;
   }
   if (rok <= 2199)
   {
      return 6;
   }
   if (rok <= 2299)
   {
      return 0;
   }
   if (rok <= 2499)
   {
      return 1;
   }
   return 0; /* poza zakresem */
}

/* oblicz ile dni po 22 marca przypada wielkanoc */
int wielkanoc(int rok)
{
   int a, b, c, d, e;
   
   a = rok % 19;
   b = rok % 4;
   c = rok % 7;
   d = (a*19 + getA(rok)) % 30;
   e = (2*b + 4*c + 6*d + getB(rok)) % 7;
   if ((d == 29 && e == 6) ||
       (d == 28 && e == 6))
   {
      d-=7;
   }
   return d+e;
}

/* pobierz dane od uzytkownika */
int main()
{
   int rok;
   int data;
   
   printf("Podaj rok (33-2499)\n");
   scanf("%d", &rok);
   
   if ((rok < 33) || (rok > 2499))
   {
      printf("Podany rok nie jest w zakresie 33-2499.\n");
      return 0;
   }
   
   data = 22 + wielkanoc(rok);
   if (data > 31)
   {
      printf("Wielkanoc przypada %d kwietnia\n", data%31);
   }
   else
   {
      printf("Wielkanoc przypada %d marca\n", data);
   }
   
   return 0;
}
Dodaj komentarz