Premetto che sono alle prime armi, io risolverei questo problema con due variabili in cui immagazzinare i giorni trascorsi dall'inizio dell'anno fino alla prima data e i giorni trascorsi fino alla seconda, dopodichè effettuare una sottrazione e aggiungere il numero dei giorni trascorsi negli anni di differeanza tra le date.
Ho scritto il codice che utilizzerei, ovviamente va perfezionato e adattato all'esigenza, inserendo i possibili errori nell'immissione dati, spero possa comunque esserti utile...
codice:
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int giorno,mese,anno,giorno1,mese1,anno1,addendo1=0,addendo2=0,risultato,i=0;
cout<<"inserisci la prima data(giorno): ";
cin>>giorno;
cout<<"\ninserisci la prima data(mese): ";
cin>>mese;
cout<<"\ninserisci la prima data(anno): ";
cin>>anno;
cout<<"\ninserisci la seconda data(giorno): ";
cin>>giorno1;
cout<<"\ninserisci la seconda data(mese): ";
cin>>mese1;
cout<<"\ninserisci la seconda data(anno): ";
cin>>anno1;
i=0;
while(i<mese){/*somma alla variabile della prima quantità di giorni i giorni trascorsi dall'inizio dell'anno, in base ai mesi*/
switch(i){
case 0:addendo1+=31;break;
case 1:addendo1+=28;break;
case 2:addendo1+=31;break;
case 3:addendo1+=30;break;
case 4:addendo1+=31;break;
case 5:addendo1+=30;break;
case 6:addendo1+=31;break;
case 7:addendo1+=31;break;
case 8:addendo1+=30;break;
case 9:addendo1+=31;break;
case 10:addendo1+=31;break;
case 11:addendo1+=31;break;
}
i++;
}
addendo1+=giorno;
i=0;
while(i<mese1){
switch(i){
case 0:addendo2+=31;break;
case 1:addendo2+=28;break;
case 2:addendo2+=31;break;
case 3:addendo2+=30;break;
case 4:addendo2+=31;break;
case 5:addendo2+=30;break;
case 6:addendo2+=31;break;
case 7:addendo2+=31;break;
case 8:addendo2+=30;break;
case 9:addendo2+=31;break;
case 10:addendo2+=31;break;
case 11:addendo2+=31;break;
}
i++;
}
addendo2+=giorno1;
cout<<"la distanza tra le date e' di "<<(addendo2-addendo1)+((anno1-anno)*365)<<" giorni"<<endl; /*sottrae ai giorni dalla data di scadenza quelli dei giorni dalla data di inizio,poi aqggiunge gli anni trascorsi*/
system("PAUSE");
return 0;
}