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; }
							 | 
						||
| 
								 | 
							
								}
							 |