#include <stdio.h>
#include <conio.h>
void main()
{
int dia=0,mes=0,any=0,i=0,avdia=0;
long int diax=0,j=0;
char b='s';
do
{
clrscr();b='s';
printf ("Introduce la fecha: / /");
gotoxy(21,1);
scanf("%d",&dia);
gotoxy(24,1);
scanf("%d",&mes);
gotoxy(27,1);
scanf("%d",&any);
if (mes>12 || mes <1)
{
printf("No hay mas de 12 meses o menos de 1, vuelve a intentarlo");
b='n';getch();
}
if (((mes==1) || (mes==3) ||(mes==5) ||(mes==7) ||(mes==8) ||(mes==10) ||(mes==12)) && (dia>31 || dia<1))
{
printf("No puede tener mas de 31 dias o menos de 1 dia,vuelva a intentarlo");
b='n';
getch();
}
if (((mes==4) ||(mes==6) ||(mes==9) ||(mes==11)) && (dia>30 || dia<1))
{
printf("No puede tener mas de 30 dias o menos de 1 dia, vuelva a intentarlo");
b='n';
getch();
}
if (((any%4==0) && (mes==2)) && (dia>29 || dia<1))
{
printf("No puede tener mas de 29 dias o menos de 1 dia, vuelva a intentarlo");
b='n';
getch();
}
if (((any%4!=0)&&(mes==2)) && (dia>28 || dia<1))
{
printf("No puede tener mas de 28 dias o menos de 1 dia, vuelva a intentarlo");
b='n';
getch();
}
if (any<0)
{
printf("el a¤o no puede ser menor de 0, vuelve a intentarlo");
b='n';
getch();
}
}while (b!='s');
if (any>2001)
{
if (any>2002)
{
for (j=2002;j<any;j++)
{
for (i=1;i<=12;i++)
{
if ((i==1) || (i==3) ||(i==5) ||(i==7) ||(i==8) ||(i==10) ||(i==12))
diax+=31;
else if ((i==4) ||(i==6) ||(i==9) ||(i==11)) diax+=30;
if ((j%4==0)&&(i==2)) diax+=29;
else diax+=28;
}
}
}
for (i=1;i<mes;i++)
{
if ((i==1) || (i==3) ||(i==5) ||(i==7) ||(i==8) ||(i==10) ||(i==12))
diax+=31;
else if ((i==4) ||(i==6) ||(i==9) ||(i==11)) diax+=30;
if ((any%4==0)&&(i==2)) diax+=29;
else diax+=28;
}
diax+=28+dia;avdia=diax%7; /*tomo como ref. el 3/12/01 para guiarme,por eso
el 28*/
switch (avdia)
{
case 0: printf ("El %d/%d/%d es lunes",dia,mes,any);break;
case 1: printf ("El %d/%d/%d es martes",dia,mes,any);break;
case 2: printf ("El %d/%d/%d es miercoles",dia,mes,any);break;
case 3: printf ("El %d/%d/%d es jueves",dia,mes,any);break;
case 4: printf ("El %d/%d/%d es viernes",dia,mes,any);break;
case 5: printf ("El %d/%d/%d es sabado",dia,mes,any);break;
case 6: printf ("El %d/%d/%d es domingo",dia,mes,any);break;
}
}
if (any<=2001) /*tomo como ref. el 1/1/2002 para guiarme*/
{
if (any<2001)
{
for (j=2001;j>any;j--)
{
for (i=1;i<=12;i++)
{
if ((i==1) || (i==3) ||(i==5) ||(i==7) ||(i==8) ||(i==10) ||(i==12))
diax+=31;
else if ((i==4) ||(i==6) ||(i==9) ||(i==11)) diax+=30;
if ((j%4==0)&&(i==2)) diax+=29;
else diax+=28;
}
}
}
for (i=12;i>=mes;i--)
{
if ((i==1) || (i==3) ||(i==5) ||(i==7) ||(i==8) ||(i==10) ||(i==12))
{diax+=31;if (i==mes) diax-=dia;}
if ((i==4) ||(i==6) ||(i==9) ||(i==11))
{diax+=30;if (i==mes) diax-=dia;}
if ((any%4==0)&&(i==2))
{diax+=29;if (i==mes) diax-=dia;}
if ((any%4!=0)&&(i==2))
{diax+=28;if (i==mes) diax-=dia;}
}/*fecha referencia 1/1/2002*/
avdia=diax%7;
switch (avdia)
{
case 0: printf ("El %d/%d/%d es lunes",dia,mes,any);break;
case 1: printf ("El %d/%d/%d es domingo",dia,mes,any);break;
case 2: printf ("El %d/%d/%d es sabado",dia,mes,any);break;
case 3: printf ("El %d/%d/%d es viernes",dia,mes,any);break;
case 4: printf ("El %d/%d/%d es jueves",dia,mes,any);break;
case 5: printf ("El %d/%d/%d es miercoles",dia,mes,any);break;
case 6: printf ("El %d/%d/%d es martes",dia,mes,any);break;
}
}
getch();
}
Comentarios sobre la versión: Versión 1 (4)
no seras tu el fracasado y frustrado.