25 lines
		
	
	
		
			469 B
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			25 lines
		
	
	
		
			469 B
		
	
	
	
		
			C
		
	
	
	
	
	
|   | #include "tai.h"
 | ||
|  | #include "caldate.h"
 | ||
|  | 
 | ||
|  | void caldate_easter(struct caldate *cd) | ||
|  | { | ||
|  |   long c; | ||
|  |   long t; | ||
|  |   long j; | ||
|  |   long n; | ||
|  |   long y; | ||
|  | 
 | ||
|  |   y = cd->year; | ||
|  | 
 | ||
|  |   c = (y / 100) + 1; | ||
|  |   t = 210 - (((c * 3) / 4) % 210); | ||
|  |   j = y % 19; | ||
|  |   n = 57 - ((14 + j * 11 + (c * 8 + 5) / 25 + t) % 30); | ||
|  |   if ((n == 56) && (j > 10)) --n; | ||
|  |   if (n == 57) --n; | ||
|  |   n -= ((((y % 28) * 5) / 4 + t + n + 2) % 7); | ||
|  | 
 | ||
|  |   if (n < 32) { cd->month = 3; cd->day = n; } | ||
|  |   else { cd->month = 4; cd->day = n - 31; } | ||
|  | } |