codice:
#include <stdio.h>
void sostituisci(int *,int *,int *,int *,int *,int *);
int bisestile(int a)
{
if (a>=0) {
if (a<1582)
return (a % 4) ? 1 : 0;
else
return ((a % 4 == 0 && a % 100 != 0) || a % 400 == 0) ? 1 : 0;
}
return 0;
}
main()
{
int giorni[]={31,28,31,30,31,30,31,31,30,31,30,31};
char x;
int g1,g2,m1,m2,a1,a2,ris,val;
int fail_1=1;
int fail_2=1;
printf("\n\t\t\tCONFRONTO DATE\n\n");
printf("// prima data //\n\n");
do {
printf("Inserire Giorno: ");
val = scanf("%d",&g1);
while(getc(stdin)!='\n');
} while(val==0);
do {
printf("Inserire Mese: ");
val = scanf("%d",&m1);
while(getc(stdin)!='\n');
} while(val==0);
do {
printf("Inserire Anno: ");
val = scanf("%d",&a1);
while(getc(stdin)!='\n');
} while(val==0);
ris=bisestile(a1);
if (a1>0)
if (m1>0 && m1<13)
if (g1>0 && g1<giorni[m1-1]+1 + (m1==2 ? ris : 0))
{
fail_1=0;
printf("\nHai inserito %d-%d-%d \n\n\n",g1,m1,a1);
printf("// seconda data //\n\n");
do {
printf("Inserire Giorno: ");
val = scanf("%d",&g2);
while(getc(stdin)!='\n');
} while(val==0);
do {
printf("Inserire Mese: ");
val = scanf("%d",&m2);
while(getc(stdin)!='\n');
} while(val==0);
do {
printf("Inserire Anno: ");
val = scanf("%d",&a2);
while(getc(stdin)!='\n');
} while(val==0);
ris=bisestile(a2);
if (a2>0)
if (m2>0 && m2<13)
if (g2>0 && g2<giorni[m2-1]+1 + (m2==2 ? ris : 0))
{
fail_2=0;
printf("\nHai inserito %d-%d-%d \n\n",g2,m2,a2);
printf("Premere INVIO per continuare...");
x=getchar();
if (x=='\n') {
printf("\n");
if (g2==g1 && m2==m1 && a2==a1)
printf("Le date sono identiche\n\n");
else {
if (a2>a1) sostituisci(&g1,&m1,&a1,&g2,&m2,&a2);
else if (a2==a1)
if (m2>m1) sostituisci(&g1,&m1,&a1,&g2,&m2,&a2);
else if (m2==m1)
if (g2>g1) sostituisci(&g1,&m1,&a1,&g2,&m2,&a2);
printf("La data più recente è %d-%d-%d\n\n",g1,m1,a1);
}
}
}
if (fail_2) printf("\nLa data inserita non é valida\n\n");
}
if (fail_1) printf("\nLa data inserita non è valida\n\n");
}
void sostituisci(int *g1,int *m1,int *a1,int *g2,int *m2,int *a2)
{
*g1=*g2;
*m1=*m2;
*a1=*a2;
}