utilidad Cal (código fuente)
/* Programa escrito por helptex23 para Linux.
Las vocales acentuadas y las eñes se han incluido en los comandos printf como caracteres
%c dando los valores obtenidos a cada uno con el bucle
for(i=0;i<256;i++)printf(\"el numero %d corresponde al caracter %c\\n\",i,i);
*/
/* Compilación: gcc -o Cal Cal.c -lm */
/*Uso: Invocando el programa sin argumentos muestra la fecha actrual, gregoriana, juliana e islámica
junto con el dia juliano, dias transcurridos desde el 1 de enero calendario del mes.
Invocando el programa con la opción -f, ejemplo: Cal -f 2007 muestra las fiestas móviles
para el año 2007, es decir, pascua, ascensión, inicio del ramadán etc.
Invocandolo con el parámetro -h muestra la ayuda y las fechas de cambio de calendario juliano a
gregoriano en muchos paises.
invocandolo con el parámetro DD/MM/AAAA-dd/mm/aaaa muestra el numero de días transcurridos desde
la fecha dd/mm/aaaa hasta la fecha DD/MM/AAAA.
Invocandolo con la opción -g y el parámetro dd/mm/aaaa cambia la fecha gregoriana dd/mm/aaaa a juliana,
islámica y dia juliano, etc...
Las demás opciones pueden verse invocando la ayuda con la opción -h
*/
#include <stdlib.h>
#include <math.h>
#include <time.h>
long dia, mes, any,idia,imes,iany,dia2,mes2,any2;
double dj, dj2;
char fecha[30], ifecha[30],numero[13];
char cdia[31][3]={\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",
\"15\",\"16\",\"17\",\"18\", \"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",
\"29\",\"30\",\"31\"};
char cmes[12][11]={\"enero\",\"febrero\",\"marzo\",\"abril\",\"mayo\",\"junio\",\"julio\",
\"agosto\",\"septiembre\",\"octubre\",\"noviembre\",\"diciembre\"};
int MesAcum[15]={0,0,0,0,31,61,92,122,153,184,214,245,275,306,337};
char DiaSemana[7][10]={\"domingo\",\"lunes\", \"martes\",\"miercoles\",\"jueves\",\"viernes\",\"sabado\"};
char imesn[14][20]={\"Muharram (1)\",\"Safar (2)\", \"Rabi\'a I (3)\",\"Rabi\'a II(4)\",\"Jumada I (5)\",
\"Jumada II (6)\",\"Rajab (7)\", \"Sha\'ban (8)\",\"Ramadan (9)\",\"Shawwal (10)\",\"Dhu al-Q\'adah (11)\",
\"Dhu al-Hijjah (12)\",\"Muharram (11)\"};
int cSeptuagesima=-63;
int cCeniza=-46;
int cRamos=-7;
int cViernesSanto=-2;
int cAscension=39;
int cPentecostes=49;
int cCorpusChristi=60;
double Septuagesima, Ceniza, Ramos, ViernesSanto, Ascension,Pentecostes,
CorpusChristi,Pascua, Ramadan;
char ny=241;
char aa=225;
char ae=233;
char ai=237;
char ao=243;
char au=250;
char vacio[]=\"\";
/* trunca la parte fraccionaria de un numero real*/
int diaSemana(double k)
{
long d;
d=(long)(floor(k+1.5));
return(d%7);
}
long integer(double num)
{
long n;
n=floor(num);
if (n<0)n++;
return n;
}
/*transforma un long a string */
long pot(int nn)
{
int i;
long l;
i=0;
l=1;
while(i<nn){l=l*10;i++;}
return (l);
}
int inttostr(long num)
{
int i,cifr,k,n,signo;
long divis;
char fech[30]=\"0\", menos[30]=\"-\";
double fracc,fnum;
signo=0;
if(num==0){strcpy(numero,fech);return(0);}
if(num<0){signo=1;num=-num;}
fnum=(double)num*10;
if(fnum==0){strcpy(fecha,fech);return(0);}
divis=1000000000;
i=1;
n=0;
while(num/i>0){i=i*10;n++;}
k=n;
i=0;
while(i<=n)
{
fnum=fnum/pot(k);
cifr=(int)fnum;
fracc=fnum-cifr+0.000000000002;
fnum=fracc*pot(k);
numero[i]=cifr+48;
i++;
k--;
}
numero[i-1]=\'\\0\';
if (signo==1){strcat(menos,numero);strcpy(numero,menos);}
return 0;
}
/*Devuelve el dia juliano de la fecha gregoriana */
double greg2dj(long dia, long mes, long any)
{/* begin greg2dj */
long anyy,mess,correc;
if((dia<1L)||(dia>31L)){printf(\"ERROR: D%ca fuera de rango\\n\",ai);exit(1);}
if((mes<1L)||(mes>12L)){printf(\"ERROR: mes fuera de rango\\n\");exit(1);}
if((any<-4713L)||(any>1999999999L)){printf(\"ERROR: a%co fuera de rango\\n\",ny);exit(1);}
correc=0;
if((any==0L)&&(mes<=2L))correc=1L;
if(any<0)correc=1L;
anyy=any-1+floor((mes+7)/10);
mess=((mes+9)%12)+3;
return(dia+MesAcum[mess]+365*anyy+floor(anyy/4)-floor(anyy/100)+floor(anyy/400)+1721118.5-correc);
}/* end greg2dj */
/* Calcula la fecha gregoriana a partir de dia juliano */
char *dj2greg(double jd)
{
double G,Z,R;
long A,B,C;
int correct;
char sep[]=\" de \";
strcpy(fecha,vacio);
correct=0;
Z=floor(jd-1721118.5);
R=jd-1721118.5-Z;
G=Z-0.25;
A=floor(G/36524.25);
B=A-floor(A/4);
any=floor((B+G)/365.25);
C=B+Z-floor(365.25*any);
mes=integer((5*C+456)/153);
dia=C-integer((153*mes-457)/5)+R;
if((any==0L)&&(mes<=2L))correct=1;
if(any<0)correct=1;
if(correct==1)
{
jd++;
Z=floor(jd-1721118.5);
R=jd-1721118.5-Z;
G=Z-0.25;
A=floor(G/36524.25);
B=A-floor(A/4);
any=floor((B+G)/365.25);
C=B+Z-floor(365.25*any);
mes=integer((5*C+456)/153);
dia=C-integer((153*mes-457)/5)+R;
}
if(mes>12){any++;mes=mes-12;}
if((dia<1)||(dia>31)){printf(\"ERROR: Calc. fecha greg.\\n\");exit(2);}
if((mes<1)||(mes>12)){printf(\"ERROR: Calc. fecha greg.\\n\");exit(2);}
inttostr(any);
strcpy(fecha,cdia[dia-1]);
strcat(fecha,sep);
strcat(fecha,cmes[mes-1]);
strcat(fecha,sep);
strcat(fecha,numero);
return (fecha);
}
double jul2dj(long dia, long mes, long any)
{/* begin jul2dj */
long anyy,mess,correc;
if((dia<1L)||(dia>31L)){printf(\"ERROR: d%ca fuera de rango\\n\",ai);exit(1);}
if((mes<1L)||(mes>12L)){printf(\"ERROR: mes fuera de rango\\n\");exit(1);}
if((any<-4713L)||(any>1999999999L)){printf(\"ERROR: a%co fuera de rango\\n\",ny);exit(1);}
correc=0;
if(any<0)any=any+1;
if((any==0L)&&(mes<=2L))correc=1L;
if(any<0)correc=1L;
anyy=any-1+floor((mes+7)/10);
mess=((mes+9)%12)+3;
return (dia+MesAcum[mess]+365*anyy+floor(anyy/4)+1721116.5)-correc;
}/*end jul2jd */
char *dj2jul(double jd)
{
double Z,R;
long C;
char sep[]=\" de \";
strcpy(fecha,vacio);
Z=floor(jd-1721116.5);
R=jd-1721116.5-Z;
any=floor((Z-0.25)/365.25);
C=Z-floor(365.25*any);
mes=integer((5*C+456)/153);
dia=C-integer((153*mes-457)/5)+R;
if(mes>12){any++;mes=mes-12;}
if((dia<1)||(dia>31)){printf(\"ERROR: Calc. fecha jul.\\n\");exit(2);}
if((mes<1)||(mes>12)){printf(\"ERROR: Calc. fecha jul.\\n\");exit(2);}
if(any<=0)any=any-1;
inttostr(any);
strcpy(fecha,cdia[dia-1]);
strcat(fecha,sep);
strcat(fecha,cmes[mes-1]);
strcat(fecha,sep);
strcat(fecha,numero);
return (fecha);
}
/*Calcula la fecha de pascua para el año pany*/
int pascua(long pany)
{
long a,b,c,d,e,f,g,h,i,k,l,m,n,p;
a=pany%19;
b=(long)pany/100;
c=pany%100;
d=b/4;
e=b%4;
f=(b+8)/25;
g=(b-f+1)/3;
h=(19*a+b-d-g+15)%30;
i=c/4;
k=c%4;
l=(32+2*e+2*i-h-k)%7;
m=(a+11*h+22*l)/451;
n=(h+l-7*m+114)/31;
p=(h+l-7*m+114)%31;
dia=(int)p+1;
mes=(int)n;
any=(int)pany;
return(0);
}
/*Función que calcula el dia juliano a partir de una fecha islámica */
double islam2dj(int idia,int imes,int iany)
{
double idj;
int i, j;
int anys[30]={354,709,1063,1417,1772,2126,2481,2835,3189,3544,3898,
4252,4607,4961,5315,5670,6024,6379,6733,7087,7442,7796,8150,8505,
8859,9214,9568,9922,10277,10631};
int mesos[12]={0,30,59,89,118,148,177,207,236,266,295,325};
if((idia<1)||(idia>30)){printf(\"ERROR: Formato fecha isl%cmica\\n\",aa);exit(3);}
if((imes<1)||(imes>12)){printf(\"ERROR: Formato fecha isl%cmica\\n\",aa);exit(3);}
if(iany<1){printf(\"ERROR: Formato fecha isl%cmica\\n\",aa);exit(3);}
idj=0;
i=(int)(iany-1)/30;
j=(iany-1)%30;
idj=i*10631;
if(j>0)idj=idj+anys[j-1];
idj=idj+mesos[imes-1]+idia;
return(idj+1948438.5);
}
/*Función que calcula la fecha islámica a partir de un día juliano */
char *dj2islam(double dji)
{
int i,ciclo;
char sep[]=\"-\";
int anys[30]={354,355,354,354,355,354,355,354,354,355,354,
354,355,354,354,355,354,355,354,354,355,354,354,355,
354,355,354,354,355,354};
int mesos[12]={30,29,30,29,30,29,30,29,30,29,30,29};
int bisis[30]={0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,1,0};
dji=dji-1948438;
strcpy(ifecha,vacio);
if(dji<1){printf(\"La fecha es anterior a la hejira\\n\");exit(1);}
iany=0;
while (dji>0)
{
dji=dji-10631;
iany++;
}
iany=(iany-1)*30;
dji=dji+10631;
if(dji==10631)
{
idia=29;
imes=12;
iany=iany+29;
return(0);
}
i=0;
while(dji>0)
{
dji=dji-anys[i];
i++;
}
ciclo=i;
iany=iany+i;
dji=dji+anys[i-1];
i=0;
while(dji>0)
{
dji=dji-mesos[i];
if(i==11)dji=dji-bisis[ciclo-1];
i++;
}
imes=i;
dji=dji+mesos[i-1];
if(i==12)dji=dji+bisis[ciclo-1];
idia=(int)dji;
if ((imes==0)&&(iany>1)){imes=12;iany--;}
if(imes>12){iany++;imes=imes-12;}
if((idia<1)||(idia>30)){printf(\"ERROR: Calc. fecha isl%cmica.\\n\",aa);exit(4);}
if((imes<1)||(imes>12)){printf(\"ERROR: Calc. fecha isl%cmica.\\n\",aa);exit(4);}
inttostr(iany);
strcpy(ifecha,cdia[idia-1]);
strcat(ifecha,sep);
strcat(ifecha,imesn[imes-1]);
strcat(ifecha,sep);
strcat(ifecha,numero);
return (ifecha);
}
/* calcula el dia juliano de la pascua para el año argumento*/
double djPascua(long pany)
{
pascua(pany);
if(any<1583){printf(\"\\aerror: a%co inferior a 1582.\\n\",ny);exit(1);}
return greg2dj(dia,mes,any);
}
/* Calcula dia juliano del dia de hoy */
double hoyDiajul()
{
time_t *ttt;
time_t temps;
ttt=NULL;
temps=time(ttt);
return(temps/86400+2440587.5);
}
double ramadan(long pany)
{
double k;
dia=1,mes=1,any=pany;
k=greg2dj(dia,mes,any);
dj2islam(k);
idia=1;imes=9;
k=islam2dj(idia,imes,iany);
dj2greg(k);
if(any==pany)return(islam2dj(idia,imes,iany));
if(pany<any)iany--;
if(pany>iany)iany++;
return(islam2dj(idia,imes,iany));
}
int fiestasMoviles(long pany)
{
if(pany<622){printf(\"ERROR: El a%co debe ser mayor que 622\\n\",ny);exit(5);}
Pascua=djPascua(pany);
Septuagesima=Pascua+cSeptuagesima;
Ceniza=cCeniza+Pascua;
Ramos=cRamos+Pascua;
ViernesSanto=cViernesSanto+Pascua;
Ascension=cAscension+Pascua;
Pentecostes=cPentecostes+Pascua;
CorpusChristi=cCorpusChristi+Pascua;
Ramadan=ramadan(pany);
return(0);
}
/* parse argument
Si devuelve \'j\' se trata de dia juliano para clacular fechas.
Si devuelve \'f\' se trata de una fecha.
Si devuelve \'m\' se trata de una fecha en dia, mes any -/+ numero float.
Si devuelve \'D\' se trata de una fecha en dia, mes any - dia2,mes2 any2.
Si devuelve \'h\' se trata de ayuda.
en otro caso error y devuelve e
*/
char parseArgument(char *arg)
{
int i,j,len,slack,signo, numsign;
char cnum[20];
char ayuda[]=\"-h\";
if(strcmp(arg,ayuda)==0)return(\'h\');
slack=0;
signo=0;
numsign=0;
len=strlen(arg);
i=0;
while (i<len)
{
if(arg[i]==\'/\')slack++;
if(arg[i]==\'+\'){numsign++;}
if(arg[i]==\'-\'){numsign++;}
i++;
}
i=0;
if((slack==0)&&(numsign==0))
{
i=0;
while(i<len)
{
cnum[i]=arg[i];
i++;
}
cnum[i]=\'\\0\';
dj=atof(cnum);
return(\'j\');
}
if((slack==2)&&(numsign==0))
{
i=0;
j=0;
while((arg[i]!=\'/\')&&(i<len))
{
cnum[j]=arg[i];
i++;
j++;
}
cnum[j]=\'\\0\';
i++;
j=0;
dia=atol(cnum);
while((arg[i]!=\'/\')&&(i<len))
{
cnum[j]=arg[i];
i++;
j++;
}
cnum[j]=\'\\0\';
i++;
j=0;
mes=atol(cnum);
while(i<len)
{
cnum[j]=arg[i];
i++;j++;
}
cnum[j]=\'\\0\';
any=atol(cnum);
return (\'f\');
}
if((slack==2)&&(numsign==1))
{
i=0;
j=0;
while((arg[i]!=\'/\')&&(i<len))
{
cnum[j]=arg[i];
i++;
j++;
}
cnum[j]=\'\\0\';
i++;
j=0;
dia=atol(cnum);
while((arg[i]!=\'/\')&&(i<len))
{
cnum[j]=arg[i];
i++;
j++;
}
cnum[j]=\'\\0\';
i++;
j=0;
mes=atol(cnum);
while((arg[i]!=\'+\')&&(arg[i]!=\'-\')&&(i<len))
{
cnum[j]=arg[i];
i++;j++;
}
cnum[j]=\'\\0\';
any=atol(cnum);/**/
j=0;
while(i<len)
{
cnum[j]=arg[i];
i++;
j++;
}
cnum[j]=\'\\0\';
dj=atof(cnum);
return (\'m\');
}
if((slack==4)&&(numsign==1))
{
i=0;
j=0;
while((arg[i]!=\'/\')&&(i<len))
{
cnum[j]=arg[i];
i++;
j++;
}
cnum[j]=\'\\0\';
i++;
j=0;
dia=atol(cnum);
while((arg[i]!=\'/\')&&(i<len))
{
cnum[j]=arg[i];
i++;
j++;
}
cnum[j]=\'\\0\';
i++;
j=0;
mes=atol(cnum);
while((arg[i]!=\'+\')&&(arg[i]!=\'-\')&&(i<len))
{
cnum[j]=arg[i];
i++;j++;
}
cnum[j]=\'\\0\';
any=atol(cnum);
i++;
if (arg[i]==\'+\')signo=1;
if (arg[i]==\'-\')signo=-1;
j=0;
j=0;
while((arg[i]!=\'/\')&&(i<len))
{
cnum[j]=arg[i];
i++;
j++;
}
cnum[j]=\'\\0\';
i++;
j=0;
dia2=atol(cnum);
while((arg[i]!=\'/\')&&(i<len))
{
cnum[j]=arg[i];
i++;
j++;
}
cnum[j]=\'\\0\';
i++;
j=0;
mes2=atol(cnum);
while((arg[i]!=\'+\')&&(arg[i]!=\'-\')&&(i<len))
{
cnum[j]=arg[i];
i++;j++;
}
cnum[j]=\'\\0\';
any2=atol(cnum);
if(signo==1)return(\'D\');
else
return (\'d\');
}
return(\'e\');
}
int printHelp()
{
printf(\"Cal [-opci%cn][argument]:\\n\\n\",ao);
printf(\"Sin opci%cn ni argumento: Muestra el d%ca juliano y\\n\",ao,ai);
printf(\"la fecha gregoriana,juliana e isl%cmica actuales. Adem%cs los d%cas\\n\",aa,aa,ai);
printf(\"transcurridos desde el primero de enero hasta hoy.\\n\\n\");
printf(\"Sin opci%cn y argumento un literal de coma flotante X:\\n\",ao);
printf(\"Muestra las fechas gregoriana, juliana e isl%cmica correspondientes\\n\",aa);
printf(\"al dia juliano X.\\n\\n\");
printf(\"Sin opci%cn DD/MM/AAAA-dd/mm/aaaa:\\n\",ao);
printf(\"Calcula la diferencia entre las dos fechas gregorianas.\\n\\n\");
printf(\"Sin opci%cn y argumento DD/MM/AAAA-N:\\n\",ao);
printf(\"Calcula la fecha gregoriana N dias antes de DD/MM/AAAA.\\n\\n\");
printf(\"Sin opci%cn y argumento DD/MM/AAAA+N:\\n\",ao);
printf(\"Calcula la fecha gregoriana N dias despu%cs de DD/MM/AAAA.\\n\\n\",ae);
printf(\"-f AAAA: Muestra las fiestas m%cviles para el a%co AAAA.\\n\\n\",ao,ny);
printf(\"-g DD/MM/AAAA: Muestra el d%ca juliano, fecha juliana e isl%cmica\\n\",ai,aa);
printf(\" correspondientes a la fecha gregoriana AA/MM/AAAA.\\n\\n\");
printf(\"-h sin argumento: Muestra la ayuda.\\n\\n\");
printf(\"-i DD/MM/AAAA: Muestra el d%ca juliano, fecha gregoriana y juliana\\n\",ai);
printf(\" correspondientes a la fecha isl%ccmica AA/MM/AAAA.\\n\\n\",aa);
printf(\"-j DD/MM/AAAA: Muestra el d%ca juliano, fecha gregoriana e isl%cmica\\n\",ai,aa);
printf(\" correspondientes a la fecha juliana AA/MM/AAAA.\\n\\n\");
printf(\"Fechas de cambio de calendario juliano a gregoriano segun paises.\\n\");
printf(\" Pa%cs Del d%ca juliano se pas%c al gregoriano\\n\",ai,ai,ao);
printf(\"-------------- ---------------- ----------------------\\n\");
printf(\"Alemania....... 18/02/1700 1/03/1700.\\n\");
printf(\"Austria........ 5/10/1583 16/10/1583.\\n\");
printf(\"Bulgaria....... 31/03/1916 14/04/1916.\\n\");
printf(\"Czechoslovaquia 6/01/1584 17/01/1584.\\n\");
printf(\"Dinamarca...... 18/02/1700 1/03/1700.\\n\");
printf(\"Espa%ca......... 4/10/1582 15/10/1582.\\n\",ny);
printf(\"Francia........ 9/12/1582 20/12/1582.\\n\");
printf(\"Gran Breta%ca... 2/09/1752 14/09/1752.\\n\");
printf(\"Grecia.......... 9/03/1924 23/03/1924.\\n\");
printf(\"Hungr%ca........ 21/10/1587 1/11/1587.\\n\",ai);
printf(\"Irlanda......... 2/09/1752 14/09/1752.\\n\");
printf(\"Italia.......... 4/10/1582 15/19/1582.\\n\");
printf(\"Holanda......... 1/01/1583 12/01/1583.\\n\");
printf(\"Polonia......... 4/10/1582 15/19/1582.\\n\");
printf(\"Portugal........ 4/10/1582 15/19/1582.\\n\");
printf(\"Rumania......... 31/03/1919 14/03/1919.\\n\");
printf(\"Rusia........... 31/01/1918 14/02/1918.\\n\");
printf(\"EE.UU........... 2/09/1752 14/09/1752.\\n\\n\");
return(0);
}
int case0()
{
double k;
int j;
k=hoyDiajul();
printf(\"Hoy d%ca juliano: %11.2f\\n\",ai,k);
printf(\"Hoy fecha gregoriana: %s d%ca %s.\\n\",DiaSemana[diaSemana(k)],ai,dj2greg(k));
printf(\"Hoy fecha juliana %s d%ca %s.\\n\",DiaSemana[diaSemana(k)],ai,dj2jul(k));
printf(\"Hoy fecha isl%cmica: %s.\\n\\n\",aa,dj2islam(k));
dia=1;mes=1;
j=(int)k-greg2dj(dia,mes,any)+2;
printf(\"D%ca del a%co: %d.\\n\",ai,ny,j);
system(\"cal\");
printf(\"\\n\\n\");
return(0);
}
int case1(char a)
{
long dif;
double dif2;
switch(a)
{
case \'d\':
{
dj=greg2dj(dia,mes,any);
dj2=greg2dj(dia2,mes2,any2);
dif=(long)(dj-dj2);
printf(\"Han transcurrido %d d%cas.\\n\",dif,ai);
break;
}
case \'m\':
{
dj2=greg2dj(dia,mes,any);
dif2=dj+dj2;
printf(\"Fecha: %s.\\n\", dj2greg(dif2));
break;
}
case \'j\':
{
printf(\"Fecha gregoriana: %s.\\n\", dj2greg(dj));
printf(\"Fecha juliana: %s.\\n\", dj2jul(dj));
printf(\"Fecha isl%cmica: %s.\\n\",aa,dj2islam(dj));
break;
}
case \'h\':
{
printHelp();
break;
}
}
return (0);
}
int case2(char a, char arg[])
{
char gr[]=\"-g\";
char ju[]=\"-j\";
char is[]=\"-i\";
char fi[]=\"-f\";
long djj;
if((a!=\'f\')&&(a!=\'j\')){printf(\"ERROR: l%cnea de comando.\\a\\n\",ai);return(1);}
if(strcmp(arg,gr)==0)
{
dj=greg2dj(dia,mes,any);
printf(\"Fecha juliana: %s.\\n\",dj2jul(dj));
printf(\"Fecha isl%cmica %s.\\n\",aa,dj2islam(dj));
printf(\"D%ca juliano: %11.2f.\\n\",ai,dj);
printf(\"D%ca de la semana: %s\\n\", ai, DiaSemana[diaSemana(dj)]);
}
if(strcmp(arg,ju)==0)
{
dj=jul2dj(dia,mes,any);
printf(\"Fecha gregoriana: %s.\\n\",dj2greg(dj));
printf(\"Fecha isl%cmica %s.\\n\",aa,dj2islam(dj));
printf(\"D%ca juliano: %11.2f.\\n\",ai,dj);
printf(\"D%ca de la semana: %s\\n\", ai, DiaSemana[diaSemana(dj)]);
}
if(strcmp(arg,is)==0)
{
dj=islam2dj(dia,mes,any);
printf(\"Fecha gregoriana: %s.\\n\",dj2greg(dj));
printf(\"Fecha juliana %s.\\n\",dj2jul(dj));
printf(\"D%ca juliano: %11.2f.\\n\",ai,dj);
printf(\"D%ca de la semana: %s\\n\", ai, DiaSemana[diaSemana(dj)]);
}
if(strcmp(arg,fi)==0)
{
fiestasMoviles((long)dj);
printf(\"Septuagesima: %s.\\n\",dj2greg(Septuagesima));
printf(\"Ceniza: %s.\\n\",dj2greg(Ceniza));
printf(\"Ramos: %s.\\n\",dj2greg(Ramos));
printf(\"Viernes Santo: %s.\\n\",dj2greg(ViernesSanto));
printf(\"Domingo de Pascua: %s.\\n\",dj2greg(Pascua));
printf(\"Ascension: %s.\\n\",dj2greg(Ascension));
printf(\"Pentecostes: %s.\\n\",dj2greg(Pentecostes));
printf(\"CorpusChristi: %s.\\n\",dj2greg(CorpusChristi));
printf(\"Inicio de Ramad%cn: %s.\\n\",aa, dj2greg(Ramadan));
}
return(0);
}
int main(int argc, char *argv[] )
{
char a;
if(argc==1){case0(); return(0);}
if(argc==2)
{
a=parseArgument(argv[1]);
case1(a);
return(0);
}
if(argc>2)
{
a=parseArgument(argv[2]);
case2(a,argv[1]);
}
return (0);
}
- Inicie sesión o regístrese para enviar comentarios
- 2796 lecturas

¿Por que no abres un proyecto en sourceforge y lo subes?
Parece un programa curioso, aunque no he sido capaz de compilarlo por el montón de errores sintácticos que hay (supongo que por copiarlo en html)-
Saludos.
---
¡Buscad primero, malditos! ;P