io al posto di utilizzare gli else if ho fatto così: /*programma che permette di scrivere due date e stampare a video quella più recente*/ #include int main() { int giorno1, mese1, anno1, giorno2, mese2, anno2; printf(" inserire la prima data: "); scanf("%d/%d/%d", &giorno1,&mese1,&anno1); printf(" inserire la seconda data: "); scanf("%d/%d/%d", &giorno2,&mese2,&anno2); if(anno1>anno2 || (anno1==anno2 && mese1>mese2) || (anno1==anno2 && mese1==mese2 && giorno1>giorno2)) printf(" %d/%d/%d è la più recente ",giorno1,mese1,anno1); else printf(" %d/%d/%d è la più recente ",giorno2,mese2,anno2); return 0; } funziona e il codice è anche più corto
Funziona ma farei qualche correzione sui "//casi futuri" /* Scrivere un programma che chieda di inserire 2 date nel formato gg/mm/aaaa e stampi la più recente */ #include #include int main(){ int giorno1, mese1, anno1; //dichiaro tre interi per la prima data int giorno2, mese2, anno2; //dichiaro tre interi per la seconda data printf("PROGRAMMA CHE STAMPA LA DATA PI%c RECENTE", 235); //acquisizione dati printf("
Inserire una data col formato gg/mm/aaaa: "); scanf("%d/%d/%d", &giorno1,&mese1,&anno1); printf("Inserire una seconda data col formato gg/mm/aaaa: "); scanf("%d/%d/%d", &giorno2,&mese2,&anno2); //elenco tutti i casi in cui la prima data è più recente (quindi più grande) della seconda if(anno1>anno2){ printf(" La prima data inserita %c la pi%c recente
",138,151); }else if(anno1==anno2 && mese1>mese2){ printf(" La prima data inserita %c la pi%c recente
",138,151); }else if(anno1==anno2 && mese1==mese2 && giorno1>giorno2 && giorno111 && anno1>2019 && giorno2>27 && mese2>11 && anno2>2019){ printf(" Sono state inserite date future
"); }else if(giorno1>27 && mese1>11 && anno1>2019){ printf(" La prima data inserita %c futura
",138); }else if(giorno2>27 && mese2 >11 && anno2>2019){ printf(" La seconda data inserita %c futura
",138); }else if(anno1>2019 && anno2>2019){ printf(" Sono state inserite date future
"); }else if(anno1>2019){ printf(" La prima data inserita %c futura
",138); }else if(anno2>2019){ printf(" La seconda data inserita %c futura
Il mio problema più grande è che capisco i codici scritti, ma non so implementarli da sola. Spero che con la pratica e i tuoi video, studiando, riesca a superare 'sto enorme ostacolo.
Ciao questo succede perché studi i linguaggi ma non la logica di programmazione. Si tratta di suddividere il problema in dichiarazione delle variabili primitive, array, struct etc.. poi se ci vuole un ciclo, se esistono delle condizioni ed il ritorno dei valori chiusura del programma . La difficolta sta nel passare dal pensiero-linguaggio umano-traduzione in linguaggio pc.
Se vorreste il primo esercizio scritto correttamente ecco qui: //Scrivere un programma che chieda di inserire due date nel formato gg/mmmm/aaaa e stampi la meno recente. #include #include int main(int argc, const char * argv[]) { int g1, m1, a1; int g2, m2, a2; //Richiesta del giorno (prima data). printf("Inserisci il giorno di nasciata della prima data. "); scanf("%d", &g1); if (g131) { printf(" Il giorno di nascita non è reale. "); exit(0); } //Richiesta del mese (prima data). printf(" Inserisci il mese di nasciata della prima data. "); scanf("%d", &m1); if (m112) { printf(" Il mese di nascita non è reale. "); exit(0); } //Richiesta dell'anno (prima data). printf(" Inserisci l'anno di nasciata della prima data. "); scanf("%d", &a1); if (a1
l'esercizio 1 fatto nel modo più semplice (si poteva anche utilizzare switch) #include int main(void) { int giorno1, mese1, anno1, giorno2, mese2, anno2; printf("inserire prima data "); scanf("%d%d%d",&giorno1,&mese1,&anno1); printf("inserire seconda data "); scanf("%d%d%d",&giorno2,&mese2,&anno2); if (giorno1>32 || giorno132 || giorno2anno2){ printf("la prima data è la più recente"); return 0;} if (anno1mese2){ printf("la prima data è la più recente"); return 0; } if (mese1giorno2){ printf("la prima data è la più recente"); return 0; } if (giorno1
Il secondo esercizio scritto con più precisione e particolari: //Dati 2 numeri interi A e B, si controlli se B è uguale a 0, se lo è, A è il MCD. Se non lo è si divide A con B e si assegna ad R il resto della dicisione. Se R=0 allora si può affermare che B è il MCD, altrimenti bisogna assegnare A=B e B=R e si ripete di nuovo la divisione. #include #include int main(int argc, const char * argv[]) { int A, A1; int B, B1; int R;
printf("Inserisci un numero intero. "); scanf("%d", &A); A1=A;
printf("Inserisci un secondo numero intero. "); scanf("%d", &B); B1=B;
if (B==0) { printf("%d è il massimo comune divisore fra %d e %d. ", A, A, B); exit(0); } else { do { R=A%B; if (R==0) { printf("%d è il massimo comune divisore fra %d e %d. ", B, A1, B1); exit(0); } else { A=B; B=R; } } while (R!=0); } return(0); }
io ho fatto così e funziona: #include #include int main (int argc, const char argv[]){ int a; int b; int r; printf("Inserire a e b: "); scanf("%d %d",&a,&b); while (b!=0){ r=a%b; if(r!=0){ a=b; b=r; } else { printf("%d e' il massimo comun divisore",b); exit(0); } } printf("%d e' il massimo comun divisore",a); }
Esercizio1 Inserire le date con gli "/" non me lo accetta.. devo fare 3 input diversi prima giorno poi mese poi anno ecc Sto usando WIndows con DEVC++ puo essere questo?
Ho seguito i tuoi esempi, ma ho voluto esagerare; ho creato un programma più dettagliato (esercizio 1). #include #include int main (){ int g1, m1, a1, g2, m2, a2; //////////////////////////////////////////////////////// prima data printf("PRIMA DATA "); printf("Inserisci il giorno "); scanf("%d", &g1); if(g10){
}else{ printf("che c**** di giorno hai messo"); }
printf(" Inserisci il mese "); scanf("%d", &m1); if(m10){
Stefano, Gennaro ha ragione Se stabilisci il formato della data in questa maniera: GG/MM/AA non si verifica il problema Se stabilisci la data nel formato: GG/MM/AAAA si verifica (E questo è il formato utilizzato nel video)
io l'ho fatto così e non prende l'input della seconda scanf quando eseguo: #include int main(int argc, const char * argv[]){ int gio1, gio2, me1, me2, a1, a2; char a; printf("inserire data 1 nel formato gg/mm/aaaa "); scanf("%d,%d,%d", &gio1, &me1, &a1); printf("inserire data 2 nel formato gg/mm/aaaa "); scanf("%d,%d,%d", &gio2, &me2, &a2); if(a1>a2){ printf("la prima data è più recente della seconda");} else if(a1=a2 && me1>me2){ printf("la prima data è più recente della seconda");} else if(me1=me2 && gio1>gio2){ printf("la prima data è più recente della seconda");} else if(gio1=gio2) printf("le date sono uguali"); else printf("la seconda data è più recente della prima"); }
sono riuscito a correggere dasolo e funziona perfettamente ecco: /*scrivere un programma che legge 2 date in formato gg/mm/aaaa e stampa la più recente*/ #include int main(int argc, const char * argv[]){ int gio1, gio2, me1, me2, a1, a2; char a; printf("inserire data 1 nel formato gg/mm/aaaa "); scanf("%d/%d/%d", &gio1, &me1, &a1); printf("inserire data 2 nel formato gg/mm/aaaa "); scanf("%d/%d/%d", &gio2, &me2, &a2); if(a1>a2){ printf("la prima data è più recente della seconda");} else if(a1==a2 && me1>me2){ printf("la prima data è più recente della seconda");} else if(a1==a2 && me1==me2 && gio1>gio2){ printf("la prima data è più recente della seconda");} else if(a1==a2 && me1==me2 && gio1==gio2) printf("le date sono uguali"); else printf("la seconda data è più recente della prima"); return 0; }
Per il secondo esercizio credo che questa soluzione sia più corretta: #include int main(){ int A,B,C; printf("Inserisci due numeri per calcolarne il Massimo Comune Divisore "); scanf("%d%d",&A,&B); if (B>A){ C=A; A=B; B=C; } if (B==0){ printf("%d è il Massimo Comune Divisore",A); }else{ int R=A%B; while(R!=0){ A=B; B=R; R=A%B; } printf("%d è il Massimo Comune Divisore",B); }}
L'ho fatto breve ahah #include main() { int gg1; // le variabili delle date quindi 3 variabili per ogni data. Ogni variabile rappresenta o il giorno o il mese o l'anno. int mm1; int aaaa1; int gg2; int mm2; int aaaa2; //prima data do { printf("Inserisci il giorno della prima data "); // verifico se il giorno della prima data é valido scanf("%d",&gg1); if(gg131) { printf("il giorno che hai inserito non e valido "); } } while(gg131); printf("il giorno della prima data e %d ",gg1);
do { printf("Inserisci il mese in numeri (es. Marzo=3) della prima data "); // verifico se il mese della prima data é valido scanf("%d",&mm1); if(mm112) { printf("il mese che hai inserito non e valido "); } } while(mm112); printf("il mese della prima data e %d ",mm1);
printf("Inserisci l'anno della prima data "); scanf("%d",&aaaa1); printf("l'anno della prima data e %d ",aaaa1);
// seconda data do { printf("Inserisci il giorno della seconda data "); // verifico se il giorno della seconda data é valido scanf("%d",&gg2); if(gg231) { printf("il giorno che hai inserito non e valido "); } } while(gg231); printf("il giorno della seconda data e %d ",gg2);
do { printf("Inserisci il mese in numeri (es. Marzo=3) della seconda data "); // verifico se il mese della seconda data é valido scanf("%d",&mm2); if(mm212) { printf("il mese che hai inserito non e valido "); } } while(mm212); printf("il mese della seconda data e %d ",mm2);
printf("Inserisci l'anno della seconda data "); scanf("%d",&aaaa2); printf("l'anno della seconda data e %d ",aaaa2); //inserimento delle 2 date completato printf(" la prima data che hai inserito e | %d | %d | %d | ",gg1,mm1,aaaa1); printf("la seconda data che hai inserito e | %d | %d | %d | ",gg2,mm2,aaaa2); if (aaaa1>=aaaa2) { if (aaaa1==aaaa2) { if(mm1>=mm2) { if(mm1=mm2) { if (gg1>=gg2) { if(gg1=gg2) { printf("le due date sono ugali"); } else { printf(" la prima data e piu recente della seconda"); } } else { printf("la seconda data e piu recente della prima"); } } else { printf("la prima e piu recente della seconda"); }
} else { printf("la seconda data e piu recente della prima"); } } else { printf("la prima data è piu recente della seconda"); } } else { printf("la seconda data e' piu recente della prima"); }
//scrivere un programma che chieda di inserire due date nel formato gg/mm/aaa e stampi la più recente #include int main(){ //definisco le variabili int giorno1,mese1,anno1; int giorno2,mese2,anno2;
//input delle due date //data 1 printf ("inserire data 1 "); printf ("inserire il giorno1: "); scanf("%d", &giorno1); while(giorno1>31||giorno112||mese12021){printf("Anno futuro, inserirne uno passato o presente anno1: "); scanf("%d", &anno1);} printf("la data 1 è %d-%d-%d
", giorno1,mese1,anno1);
//data 2 printf ("inserire data 2 "); printf ("inserire il giorno2: "); scanf("%d", &giorno2); while(giorno2>31||giorno212||mese22021){printf("Anno futuro, inserirne uno passato o presente anno2: "); scanf("%d", &anno2);} printf("la data 2 è %d-%d-%d
", giorno2,mese2,anno2);
//confronto e stampo la più recente if(anno1>anno2){printf("la data più recente è la 1: %d-%d-%d
", giorno1,mese1,anno1);} else if(anno1mese2){printf("la data più recente è la 1: %d-%d-%d
", giorno1,mese1,anno1);} else if(mese1giorno2){printf("la data più recente è la 1: %d-%d-%d
boh mi stai tipo salvando la vita! Ringraziarti sarebbe poco! i tuoi video sono molto esaustivi, chiari e utili!
Interessante la cosa degli esercizi, una bella trovata
io al posto di utilizzare gli else if ho fatto così:
/*programma che permette di scrivere due date e stampare a video quella più recente*/
#include
int main()
{
int giorno1, mese1, anno1, giorno2, mese2, anno2;
printf("
inserire la prima data:
");
scanf("%d/%d/%d", &giorno1,&mese1,&anno1);
printf("
inserire la seconda data:
");
scanf("%d/%d/%d", &giorno2,&mese2,&anno2);
if(anno1>anno2 || (anno1==anno2 && mese1>mese2) || (anno1==anno2 && mese1==mese2 && giorno1>giorno2))
printf("
%d/%d/%d è la più recente
",giorno1,mese1,anno1);
else
printf("
%d/%d/%d è la più recente
",giorno2,mese2,anno2);
return 0;
}
funziona e il codice è anche più corto
Stra incasinato
Funziona ma farei qualche correzione sui "//casi futuri"
/*
Scrivere un programma che chieda di inserire 2 date nel formato gg/mm/aaaa e stampi la più recente
*/
#include
#include
int main(){
int giorno1, mese1, anno1; //dichiaro tre interi per la prima data
int giorno2, mese2, anno2; //dichiaro tre interi per la seconda data
printf("PROGRAMMA CHE STAMPA LA DATA PI%c RECENTE", 235);
//acquisizione dati
printf("
Inserire una data col formato gg/mm/aaaa: ");
scanf("%d/%d/%d", &giorno1,&mese1,&anno1);
printf("Inserire una seconda data col formato gg/mm/aaaa: ");
scanf("%d/%d/%d", &giorno2,&mese2,&anno2);
//elenco tutti i casi in cui la prima data è più recente (quindi più grande) della seconda
if(anno1>anno2){
printf("
La prima data inserita %c la pi%c recente
",138,151);
}else if(anno1==anno2 && mese1>mese2){
printf("
La prima data inserita %c la pi%c recente
",138,151);
}else if(anno1==anno2 && mese1==mese2 && giorno1>giorno2 && giorno111 && anno1>2019 && giorno2>27 && mese2>11 && anno2>2019){
printf("
Sono state inserite date future
");
}else if(giorno1>27 && mese1>11 && anno1>2019){
printf("
La prima data inserita %c futura
",138);
}else if(giorno2>27 && mese2 >11 && anno2>2019){
printf("
La seconda data inserita %c futura
",138);
}else if(anno1>2019 && anno2>2019){
printf("
Sono state inserite date future
");
}else if(anno1>2019){
printf("
La prima data inserita %c futura
",138);
}else if(anno2>2019){
printf("
La seconda data inserita %c futura
",138);
}
return 0;
}
Pareri?
Il mio problema più grande è che capisco i codici scritti, ma non so implementarli da sola. Spero che con la pratica e i tuoi video, studiando, riesca a superare 'sto enorme ostacolo.
Ciao questo succede perché studi i linguaggi ma non la logica di programmazione. Si tratta di suddividere il problema in dichiarazione delle variabili primitive, array, struct etc.. poi se ci vuole un ciclo, se esistono delle condizioni ed il ritorno dei valori chiusura del programma . La difficolta sta nel passare dal pensiero-linguaggio umano-traduzione in linguaggio pc.
L'esercizio 2 l ho fatto cosi,
l ho fatto e rifatto due volte ma il vero problema era interpretare piu che scrivere
#include
int main(){
int a,b,r;
printf("inserisci due numeri :
");
scanf("%d %d",&a,&b);
while (b != 0) {
r = b;
b = a % b;
a = r;
}
printf("%d
",a);
return 0;
}
Se vorreste il primo esercizio scritto correttamente ecco qui:
//Scrivere un programma che chieda di inserire due date nel formato gg/mmmm/aaaa e stampi la meno recente.
#include
#include
int main(int argc, const char * argv[]) {
int g1, m1, a1;
int g2, m2, a2;
//Richiesta del giorno (prima data).
printf("Inserisci il giorno di nasciata della prima data.
");
scanf("%d", &g1);
if (g131) {
printf("
Il giorno di nascita non è reale.
");
exit(0);
}
//Richiesta del mese (prima data).
printf("
Inserisci il mese di nasciata della prima data.
");
scanf("%d", &m1);
if (m112) {
printf("
Il mese di nascita non è reale.
");
exit(0);
}
//Richiesta dell'anno (prima data).
printf("
Inserisci l'anno di nasciata della prima data.
");
scanf("%d", &a1);
if (a1
So che non è ancora stato trattato nel corso, ma qui non conviene utilizzare un array di struct?
l'esercizio 1 fatto nel modo più semplice (si poteva anche utilizzare switch)
#include
int main(void) {
int giorno1, mese1, anno1, giorno2, mese2, anno2;
printf("inserire prima data
");
scanf("%d%d%d",&giorno1,&mese1,&anno1);
printf("inserire seconda data
");
scanf("%d%d%d",&giorno2,&mese2,&anno2);
if (giorno1>32 || giorno132 || giorno2anno2){
printf("la prima data è la più recente");
return 0;}
if (anno1mese2){
printf("la prima data è la più recente");
return 0;
}
if (mese1giorno2){
printf("la prima data è la più recente");
return 0;
}
if (giorno1
ma nell esercizio 3 nell'else in cui r=a%b e r==0 non è detto che b sia l' MCD, potrebbe essere un divisore qualsiasi, ma non il maggiore. giusto ?
Perchè su eclipse i printf me li butta tutti alla fine del programma in console, nonostante il codice è scritto nell'ordine giusto?
Il secondo esercizio scritto con più precisione e particolari:
//Dati 2 numeri interi A e B, si controlli se B è uguale a 0, se lo è, A è il MCD. Se non lo è si divide A con B e si assegna ad R il resto della dicisione. Se R=0 allora si può affermare che B è il MCD, altrimenti bisogna assegnare A=B e B=R e si ripete di nuovo la divisione.
#include
#include
int main(int argc, const char * argv[]) {
int A, A1;
int B, B1;
int R;
printf("Inserisci un numero intero.
");
scanf("%d", &A);
A1=A;
printf("Inserisci un secondo numero intero.
");
scanf("%d", &B);
B1=B;
if (B==0) {
printf("%d è il massimo comune divisore fra %d e %d.
", A, A, B);
exit(0);
} else {
do {
R=A%B;
if (R==0) {
printf("%d è il massimo comune divisore fra %d e %d.
", B, A1, B1);
exit(0);
} else {
A=B;
B=R;
}
} while (R!=0);
}
return(0);
}
a cosa servonono le assegnazioni a=b e b=r?
io ho fatto così e funziona:
#include
#include
int main (int argc, const char argv[]){
int a;
int b;
int r;
printf("Inserire a e b: ");
scanf("%d %d",&a,&b);
while (b!=0){
r=a%b;
if(r!=0){
a=b;
b=r;
}
else
{
printf("%d e' il massimo comun divisore",b);
exit(0);
}
}
printf("%d e' il massimo comun divisore",a);
}
Per il primo esercizio io avrei aggiunto un controllo del mese e giorno inserito, però bella lo stesso!
Esercizio1
Inserire le date con gli "/" non me lo accetta.. devo fare 3 input diversi prima giorno poi mese poi anno ecc
Sto usando WIndows con DEVC++ puo essere questo?
Meglio usare CodeBlocks, anche a me dava quel problema con DEVC++
Ho seguito i tuoi esempi, ma ho voluto esagerare; ho creato un programma più dettagliato (esercizio 1).
#include
#include
int main (){
int g1, m1, a1, g2, m2, a2;
//////////////////////////////////////////////////////// prima data
printf("PRIMA DATA
");
printf("Inserisci il giorno
");
scanf("%d", &g1);
if(g10){
}else{
printf("che c**** di giorno hai messo");
}
printf("
Inserisci il mese
");
scanf("%d", &m1);
if(m10){
}else{
printf("che c**** di mese hai messo");
}
printf("
Inserisci l'anno
");
scanf("%d", &a1);
printf("%d/",g1);
printf("%d/",m1);
printf("%d",a1);
//////////////////////////////////////////////////////// seconda data
printf("
SECONDA DATA
");
printf("Inserisci il giorno
");
scanf("%d", &g2);
if(g20){
}else{
printf("che c**** di giorno hai messo");
}
printf("
Inserisci il mese
");
scanf("%d", &m2);
if(m20){
}else{
printf("che c**** di mese hai messo");
}
printf("
Inserisci l'anno
");
scanf("%d", &a2);
printf("%d/",g2);
printf("%d/",m2);
printf("%d",a2);
//////////////////////////////////////////////////////// qual'è la più grande tra le 2
printf("
Qual' e' la piu' grande?
");
if(a1>a2){
printf("la prima data e' piu' grande");
exit(0);
}
if(a1m2){
printf("la prima data e' piu' grande");
exit(0);
}
if(m1g2){
printf("la prima data e' piu' grande");
exit(0);
}
if(g1
non conviene usare lo switch con i vari casi ? aiutoooooooooo
Infatti l'ho pensato anch'io.
Ma sbaglio o ti sei confuso? Il tuo programma stampa la data più grande, non la più recente!
la data più grande è la più recente, no?
Stefano Baviello Quindi sei io inserisco 13/07/2017 e inserisco 13/07/2477, quest'ultima è la più recente?
Stefano, Gennaro ha ragione
Se stabilisci il formato della data in questa maniera: GG/MM/AA non si verifica il problema
Se stabilisci la data nel formato: GG/MM/AAAA si verifica (E questo è il formato utilizzato nel video)
sì
@@gennaroschiavone3114 Dovresti mettere le condizioni di esistenza per giorni, mesi e anni (io ho messo gli anni compresi tra 0 e 2019)
io l'ho fatto così e non prende l'input della seconda scanf quando eseguo:
#include
int main(int argc, const char * argv[]){
int gio1, gio2, me1, me2, a1, a2;
char a;
printf("inserire data 1 nel formato gg/mm/aaaa
");
scanf("%d,%d,%d", &gio1, &me1, &a1);
printf("inserire data 2 nel formato gg/mm/aaaa
");
scanf("%d,%d,%d", &gio2, &me2, &a2);
if(a1>a2){
printf("la prima data è più recente della seconda");}
else if(a1=a2 && me1>me2){
printf("la prima data è più recente della seconda");}
else if(me1=me2 && gio1>gio2){
printf("la prima data è più recente della seconda");}
else if(gio1=gio2)
printf("le date sono uguali");
else
printf("la seconda data è più recente della prima");
}
sono riuscito a correggere dasolo e funziona perfettamente ecco:
/*scrivere un programma che legge 2 date in formato gg/mm/aaaa e stampa la più recente*/
#include
int main(int argc, const char * argv[]){
int gio1, gio2, me1, me2, a1, a2;
char a;
printf("inserire data 1 nel formato gg/mm/aaaa
");
scanf("%d/%d/%d", &gio1, &me1, &a1);
printf("inserire data 2 nel formato gg/mm/aaaa
");
scanf("%d/%d/%d", &gio2, &me2, &a2);
if(a1>a2){
printf("la prima data è più recente della seconda");}
else if(a1==a2 && me1>me2){
printf("la prima data è più recente della seconda");}
else if(a1==a2 && me1==me2 && gio1>gio2){
printf("la prima data è più recente della seconda");}
else if(a1==a2 && me1==me2 && gio1==gio2)
printf("le date sono uguali");
else
printf("la seconda data è più recente della prima");
return 0;
}
+Damiano S. chi ti ha chiesto niente?
Per il secondo esercizio credo che questa soluzione sia più corretta:
#include
int main(){
int A,B,C;
printf("Inserisci due numeri per calcolarne il Massimo Comune Divisore
");
scanf("%d%d",&A,&B);
if (B>A){
C=A;
A=B;
B=C;
}
if (B==0){
printf("%d è il Massimo Comune Divisore",A);
}else{
int R=A%B;
while(R!=0){
A=B;
B=R;
R=A%B;
}
printf("%d è il Massimo Comune Divisore",B);
}}
L'ho fatto breve ahah
#include
main() {
int gg1; // le variabili delle date quindi 3 variabili per ogni data. Ogni variabile rappresenta o il giorno o il mese o l'anno.
int mm1;
int aaaa1;
int gg2;
int mm2;
int aaaa2;
//prima data
do { printf("Inserisci il giorno della prima data
"); // verifico se il giorno della prima data é valido
scanf("%d",&gg1);
if(gg131) {
printf("il giorno che hai inserito non e valido
");
}
}
while(gg131);
printf("il giorno della prima data e %d
",gg1);
do {
printf("Inserisci il mese in numeri (es. Marzo=3) della prima data
"); // verifico se il mese della prima data é valido
scanf("%d",&mm1);
if(mm112) {
printf("il mese che hai inserito non e valido
");
}
}
while(mm112);
printf("il mese della prima data e %d
",mm1);
printf("Inserisci l'anno della prima data
");
scanf("%d",&aaaa1);
printf("l'anno della prima data e %d
",aaaa1);
// seconda data
do { printf("Inserisci il giorno della seconda data
"); // verifico se il giorno della seconda data é valido
scanf("%d",&gg2);
if(gg231) {
printf("il giorno che hai inserito non e valido
");
}
}
while(gg231);
printf("il giorno della seconda data e %d
",gg2);
do {
printf("Inserisci il mese in numeri (es. Marzo=3) della seconda data
"); // verifico se il mese della seconda data é valido
scanf("%d",&mm2);
if(mm212) {
printf("il mese che hai inserito non e valido
");
}
}
while(mm212);
printf("il mese della seconda data e %d
",mm2);
printf("Inserisci l'anno della seconda data
");
scanf("%d",&aaaa2);
printf("l'anno della seconda data e %d
",aaaa2);
//inserimento delle 2 date completato
printf(" la prima data che hai inserito e | %d | %d | %d |
",gg1,mm1,aaaa1);
printf("la seconda data che hai inserito e | %d | %d | %d |
",gg2,mm2,aaaa2);
if (aaaa1>=aaaa2) {
if (aaaa1==aaaa2) {
if(mm1>=mm2) {
if(mm1=mm2) {
if (gg1>=gg2) {
if(gg1=gg2) {
printf("le due date sono ugali");
}
else {
printf(" la prima data e piu recente della seconda");
}
}
else { printf("la seconda data e piu recente della prima");
}
}
else {
printf("la prima e piu recente della seconda");
}
}
else {
printf("la seconda data e piu recente della prima");
}
}
else { printf("la prima data è piu recente della seconda");
}
}
else {
printf("la seconda data e' piu recente della prima");
}
ma poi funziona?
//scrivere un programma che chieda di inserire due date nel formato gg/mm/aaa e stampi la più recente
#include
int main(){
//definisco le variabili
int giorno1,mese1,anno1;
int giorno2,mese2,anno2;
//input delle due date
//data 1
printf ("inserire data 1
");
printf ("inserire il giorno1: ");
scanf("%d", &giorno1);
while(giorno1>31||giorno112||mese12021){printf("Anno futuro, inserirne uno passato o presente
anno1: ");
scanf("%d", &anno1);}
printf("la data 1 è %d-%d-%d
", giorno1,mese1,anno1);
//data 2
printf ("inserire data 2
");
printf ("inserire il giorno2: ");
scanf("%d", &giorno2);
while(giorno2>31||giorno212||mese22021){printf("Anno futuro, inserirne uno passato o presente
anno2: ");
scanf("%d", &anno2);}
printf("la data 2 è %d-%d-%d
", giorno2,mese2,anno2);
//confronto e stampo la più recente
if(anno1>anno2){printf("la data più recente è la 1: %d-%d-%d
", giorno1,mese1,anno1);}
else if(anno1mese2){printf("la data più recente è la 1: %d-%d-%d
", giorno1,mese1,anno1);}
else if(mese1giorno2){printf("la data più recente è la 1: %d-%d-%d
", giorno1,mese1,anno1);}
else if(giorno1