/* Traccia: Scrivere un programma che, richiesti i numeri GG, MM, AA di una data, verifichi se questa è valida.
ax[at]slackware.eu 
*/

#include <stdio.h>

int main ()
{

	int GG, MM, AA; // dichiaro le tre variabili principali
	printf("Quando sei nato?\nInserisci i numeri in formato: GG, MM, AA\n");
	scanf("%d, %d, %d", &GG, &MM, &AA); //leggo le var in input

	printf("GG=%d\n", GG); 
	printf("MM=%d\n", MM);
	printf("AA=%d\n\n", AA);

	int giorno, mese, anno; //dichiaro le 3 var di controllo sulle condizioni successive

	if(GG>0 && GG<32)  
	  if(GG==28 && MM==!2)
	    printf("Giorno non valido: l'unico mese di 28 giorni è febbraio.\n", giorno=0); //aggiungo la var di controllo sull'errore 
	 else if((GG==30) && (MM==!4 || MM==!6 || MM==!9 || MM==!11))
	  printf("Giorno non valido: i mesi di 30 giorni sono: aprile, giugno, settembre, novembre.\n", giorno=0); 
	else if((GG==31) && (MM==!1 || MM==!3 || MM==!5 || MM==!7 || MM==!8 || MM==!10 || MM==!12))
          printf("Giorno non valido. Conosci la filastrocca? \"trenta giorni ha novembre,con april,giugno e settembre, di ventotto ce n'è uno, tutti gli altri ne han tentuno\".\n", giorno=0);
        else printf("Giorno valido.\n", giorno=1); //se valido assegno a giorno=1
	
	if(MM<1 || MM>12)
		printf("Mese non valido.\n", mese=0); //se non valido assegno mese=0
	   else 
	    	printf("Mese valido.\n", mese=1); //se valido assegno a mese 1

	if(AA<1000 || AA>9999)
	  printf("Anno non valido: è ammesso se \">999 oppure <10000\"\n", anno=0); //se non valido anno=1
	   else
	  printf("Anno valido.\n", anno=1); //se valido anno=1

	(((giorno==1) && (mese==1) && (anno==1)) ? printf("\nData valida: %d %d %d\n", GG, MM, AA) : printf("\nData inserita non valida!\n")); //espressione condizionale di controllo finale			
	
}