sto provando a fare un programma che conti i giorni tra due date....
sono arrivato a questo punto
dopo aver inserito le due date però si ferma mentre mi dovrebbe stampare i giorni dall'anno zero alla prima data in modo che dopo faccio la stessa cosa con la seconda data, li sottraggo e... il gioco è fatto !!codice:#include <iostream> using namespace std; bool bisestile(int a); int bisinint(int a,int b); bool prima0(int gg,int mm, int aa,int gg1, int mm1, int aa1); int totgiorni(int gg,int mm,int aa); int main(){ int gg,mm,aa; int gg1,mm1,aa1; int giornitot0,giornitot1; cout<<"Inserire due date per conoscere il numero di giorni tra di esse"<<endl; //l'inserimento delle date cin>>gg; cout<<"/"; cin>>mm; cout<<"/"; cin>>aa; cout<<endl; cin>>gg1; cout<<"/"; cin>>mm1; cout<<"/"; cin>>aa1; //prima0(gg, mm, aa,gg1, mm1, aa1) cout<< "falla"<<totgiorni(gg,mm,aa); return 0; } /////////////////////////////////////// // le funzioni /////////////////////////////////////// //è un anno bisestile??? bool bisestile(int a){ if((a % 4 == 0 && a % 100 != 0) || a % 400 == 0) return true; else return false; } //quanti anni bisestili ci sono in quell'intervallo int bisinint(int a,int b){ int numbis=0; if (a<b){while(a<b) if (bisestile (a)==true) numbis=numbis+1; else a++; } else if (a==b){ if (bisestile(a)==true) numbis=1; else numbis=0; } else if (a>b) {while(a>b) if (bisestile (a)==true) numbis=numbis+1; else b++; } } //quale delle due date è prima??? bool prima0(int gg,int mm, int aa,int gg1, int mm1, int aa1){ if (aa1<aa) return true; else if (aa1>aa) return false; else if (aa1==aa) { if (mm1<mm) return true; else if (mm1>mm) return false; else if (mm1==mm){ if (gg1<gg) return true; else if (gg1>gg) return false; else if (gg1==gg) cout<<"Mi dispiace ma le due date sono uguali"<<endl; } } } //quanti giorni dall'anno 0?? int totgiorni(int gg,int mm,int aa){ int giorninelmese; if (mm==1) giorninelmese=31; else if (mm==2) giorninelmese = 59; else if (mm==3) giorninelmese = 90; else if (mm==4) giorninelmese = 120; else if (mm==5) giorninelmese = 151; else if (mm==6) giorninelmese = 181; else if (mm==7) giorninelmese = 212; else if (mm==8) giorninelmese = 243; else if (mm==9) giorninelmese = 273; else if (mm==10) giorninelmese = 304; else if (mm==11) giorninelmese = 334; else if (mm==12) giorninelmese = 365; return gg + (giorninelmese-gg) + ((aa-bisinint(0,aa)*365)+bisinint(0,aa)*366); }
qualche consiglio o magari se mi fate vedere qualche errore grossolano che non ho visto....
grazie a tutti
ciao

Rispondi quotando
