/* Scrivere il programma che, richiesti sei numeri che rappresentano due date nel formato GG, MM, AA, determini la più recente.
ax[at]slackware.eu 
NOTA: come sempre io esco fuori traccia e quindi printo e controllo cose in più e quindi ammetto anche che un povero cristo immetta il formato Anno in modalità completa.... esempio: 1982 , per evitare che possa confondersi con 1882 ... ovviamente essendo nel 2019 è chiaro che è ovvio ma io preferisco uscire fuori traccia e non dare nulla per scontato. Fermo restando che se mettete due cifre come la traccia a mio modo di vedere "idiota" dice, controlla lo stesso. 
ATTENZIONE: se inserite la prima data a 2 cifre dovete fare lo stesso con la seconda data. Identico discorso se inserite data a quattro cifre come si suppone per ovvi motivi. Gli operatori di controllo devono lavorare su un prefisso specifico dato. Così come da listato sono ammesse le quattro cifre per l'anno ma è chiaro che se a data1=86 e data2=1984 così come è scritto vi dirà che 1984 è la più recente. ERRATO! ma opera così perchè avete usato due date differenti in formato. Quindi a scanso di equivoci, prima di sparare su di me, controllate e rciordate bene di scegliere con che operatore digitare GG, MM, AA oppure GG, MM, AAAA.
Se frequentate corsi di studio non prendete mai esempio dai miei listati che sicuramente al 100% non saranno congrui con la "traccia". Voi sapete cosa penso... Ma chi cazz se ne fotte!
Evviva il vino. Sempre! e Mozart e Parker. Non chiedetevi perchè, pensat a salut!
*/

#include <stdio.h>

int GG, MM, AA;
int GG2, MM2, AA2;

int main ()
{

	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", AA);

	printf("Quando è nato chi vuoi tu?\nInserisci i numeri in formato: GG, MM, AA\n");
	scanf("%d, %d, %d", &GG2, &MM2, &AA2); //leggo le var in input per data2

	printf("GG2=%d\n", GG2); 
	printf("MM2=%d\n", MM2);
	printf("AA2=%d\n", AA2);

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

	if(GG>0 && GG<32)  
	  if(GG==28 && MM==!2)
	    printf("GG 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("GG 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("GG 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("GG valido.\n", giorno=1); //se valido assegno a giorno=1
	
	if(MM<1 || MM>12)
		printf("MM non valido.\n", mese=0); //se non valido assegno mese=0
	   else 
	    	printf("MM valido.\n", mese=1); //se valido assegno a mese 1

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

	(((giorno==1) && (mese==1) && (anno==1)) ? printf("1° data valida: %d %d %d\n", GG, MM, AA) : printf("1° data non valida!\n")); //espressione condizionale di controllo finale			
	
	int giorno2,mese2,anno2;

		if(GG2>0 && GG2<32)  
	  	  if(GG2==28 && MM2==!2)
	    	    printf("GG2 non valido: l'unico mese di 28 giorni è febbraio.\n", giorno2=0); //aggiungo la var di controllo sull'errore 
	 	  else if((GG2==30) && (MM2==!4 || MM2==!6 || MM2==!9 || MM2==!11))
	  	    printf("GG2 non valido: i mesi di 30 giorni sono: aprile, giugno, settembre, novembre.\n", giorno2=0); 
		  else if((GG2==31) && (MM2==!1 || MM2==!3 || MM2==!5 || MM2==!7 || MM2==!8 || MM2==!10 || MM2==!12))
         	    printf("GG2 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", giorno2=0);
        	  else printf("GG2 valido.\n", giorno2=1); //se valido assegno a giorno=1
	
		if(MM2<1 || MM2>12)
		  printf("MM2 non valido.\n", mese2=0); //se non valido assegno mese=0
	   	 else 
	    	  printf("MM2 valido.\n", mese2=1); //se valido assegno a mese 1

		if(AA2<1 || AA2>2019)
	  	  printf("AA2 non valido: è ammesso se \">1 oppure <2019\"\n", anno2=0); //se non valido anno=1
	   	 else
	  	  printf("AA2 valido.\n", anno2=1); //se valido anno=1

	(((giorno2==1) && (mese2==1) && (anno2==1)) ? printf("2° data valida: %d %d %d\n", GG2, MM2, AA2) : printf("2° data inserita non valida!\n")); //espressione condizionale di controllo finale			
	
	/* controllo finale */
	(AA>AA2) ? printf("\nLa più recente è %d,%d,%d\n", GG,MM,AA) : printf("\nLa più recente è %d,%d,%d\n", GG2, MM2, AA2);
	if(AA==AA2) 
	   if(MM>MM2)
		 printf("\n1° data è più recente\n");
	 else if(MM==MM2 && GG>GG2)
		printf("\n1° data è più recente\n");
	else if((GG==GG2) && (MM==MM2) && (AA==AA2))
		printf("\nNessuna delle due date è la pià recente. Sono identiche!\n");
	else  
	  printf("\n2° data è più recente\n"); 
  	
		
}