“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