“Dato un anno calcolare la data della Pasqua”
Analisi del problema
Di seguito viene proposto un algoritmo per il calcolo della data di Pasqua attribuito a Gauss. Il metodo è spiegato approfonditamente a questo link. Seguendo i passi proposti è possibile calcolare correttamente il giorno della Pasqua dato in input uno specifico anno. Per prima cosa è necessario considerare questa tabella:

Nel nostro caso vogliamo concentrarci nel calcolo della Pasqua dall’anno 1900 al 2099 e per questo fissiamo il valore 24 per la variabile x e 5 per la variabile y. Nella variabile n invece inseriremo l’anno preso in considerazione.
A questo punto effettuiamo i seguenti passaggi:
- a = n % 19
- b = n % 4
- c = n % 7
- d = (19a + x ) % 30
- e = (2b+4c+ 6d + y) % 7
Dopo aver dichiarato le variabili passiamo a calcolare sol = 22 + d + e
Se sol è minore o uguale a 31 allora sol è la data della pasqua nel mese di marzo.
Altrimenti se sol è diverso da 26 e 25 oppure sol == 25 e d è diverso da 28 e a < 10 allora sol è la soluzione di aprile.
Altrimenti se sol è 25 e d è 28 e a è maggiore di 10 la pasqua è il 18 aprile
Altrimenti se sol è 26 la pasqua è il 26 aprile.
Implementazione
#include <stdio.h> #include <iostream> using namespace std; int main() { cout<<"Inserisci l'anno per calcolare la Pasqua"<<endl; int n; cin>>n; int x= 24; int y = 5; int a = n % 19; int b = n%4; int c = n%7; int d = (19*a+x)%30; int e = (2*b+4*c+6*d+y)%7; int solPrincipale = 22+d+e; if(solPrincipale<=31){ cout<<solPrincipale<<" marzo"<<endl; } else{ int sol = (22+d+e-31); if((sol!=26&&sol!=25)||(sol==25&&d!=28)&&a<=10){ cout<<sol; cout<<" aprile"; } else if(sol==25&&d==28&&a>10) { cout<<"18 aprile"<<endl; } else if(sol==26){ cout<<" 26 aprile"<<endl; } } return 0; }
Vai all’implementazione