“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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *