Ho scritto questo programma che serve a confrontare due date immesse dall'utente e che dice qual'e' la piu recente.
a parte il problema nella dichiarazione della funzione sostituisci, scritta per risparmiare qualche linea di codice e come buona pratica, vorrei capire come posso fare per scambiare le due date quando la seconda e' piu recente della prima,magari con una variabile ausiliare.Io non ci sono riuscito.codice:#include <stdio.h> void sostituisci(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(); else if (a2==a1) if (m2>m1) sostituisci(); else if (m2==m1) if (g2>g1) sostituisci(); 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(g1,m1,a1,g2,m2,a2) { g1=g2; m1=m2; a1=a2; }

Rispondi quotando