45> Progettare e realizzare una funzione che effettui il controllo di validità (data entry) della data immessa nella forma gg/mm/aaaa.
1 se valida
0 se non valida
#include <stdio.h>
int data(int, int, int);
int bisestile(int);
int main(){
    int gg1,gg2,mm1,mm2,aaaa1,aaaa2;
    int max,n;
    do{
        putchar('\n');
        printf("Inserire giorno 1: ");
        scanf("%d", &gg1);
        fflush(stdin);
        printf("Inserire mese 1: ");
        scanf("%d", &mm1);
        fflush(stdin);
        printf("Inserire anno 1: ");
        scanf("%d", &aaaa1);
        fflush(stdin);
    }while(!data(gg1, mm1, aaaa1));
    printf("\nData 1 valida!\n");
    do{
        putchar('\n');
        printf("Inserire giorno 2: ");
        scanf("%d", &gg2);
        fflush(stdin);
        printf("Inserire mese 2: ");
        scanf("%d", &mm2);
        fflush(stdin);
        printf("Inserire anno 2: ");
        scanf("%d", &aaaa2);
        fflush(stdin);
    }while(!data(gg2, mm2, aaaa2));
    printf("\nData 2 valida!\n");
    return 0;
}
int bisestile(int a){
    if(a%4==0){
        if(a%100==0){
            if(a%400==0){
                return 1;
            } else {
                return 0;
            }
        } else {
            return 1;
        }
    } else {
        return 0;
    }
}
int data(int gg, int mm,int aa){
	int v[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
	if(aa<0){
		printf("Data non esistente");
		return 0;
	}
    if(bisestile(aa)){
        v[2]=29;
    }
	if(mm>12 || mm<=0){
		printf("Data non esistente");
		return 0;
	}
	if(gg>v[mm]){
		printf("Data non esistente");
		return 0;
	}
	return 1;
}

    
  
045.c