/* 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 }