sto provando a fare un programma che conti i giorni tra due date....
sono arrivato a questo punto
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); }
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 !!
qualche consiglio o magari se mi fate vedere qualche errore grossolano che non ho visto....
grazie a tutti
ciao