Mam problem dot. zadania z języka c++.
Program ma polegać na tym, że użytkownik wpisuje aktualną datę i datę urodzin i ma otrzymać dokładny wynik w dniach, miesiącach i latach, obliczyć za ile dni będzie mieć urodziny oraz wykrywać wszystkie błędy które może wykonać użytkownik (np. jako miesiąc wpisać 15, lub rok aktualny mniejszy od roku urodzin). Mam problem z tym, aby obliczył mi dokładnie ile ma miesięcy i lat z uwzględnieniem tego, że jeśli jest np. 20.10.2013, a urodziny są 22.11.2013 to jeszcze nie ma 18 lat itd.
#include <iostream>
using namespace std;
int main()
{
int dzien, miesiac, rok;
int a_dzien, a_miesiac, a_rok;
do{
cout<<"Podaj aktualna date:"<<endl;
cout<<"Dzien: ";
cin>>a_dzien;
cout<<"Miesiac: ";
cin>>a_miesiac;
cout<<"Rok: ";
cin>>a_rok;
cout<<"Podaj date urodzin: "<<endl;
cout<<"Dzien: ";
cin>>dzien;
cout<<"Miesiac: ";
cin>>miesiac;
cout<<"Rok: ";
cin>>rok;
if(a_rok<rok)
cout<<"Sprobuj jeszcze raz, aktualny rok mniejszy od roku urodzenia."<<endl;
}while(a_rok < rok);
int wynik = 0;
int tabm[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
int tabmp[12] = {31,29,31,30,31,30,31,31,30,31,30,31};
while(rok<a_rok){
if((rok%4==0 && !(rok%100==0)) || (rok%400==0)){
wynik+=366;
}
else {
wynik+=365;
}
rok++;
}
if(miesiac<a_miesiac){
while(miesiac<a_miesiac){
if((a_rok%4==0 && !(a_rok%100==0)) || (a_rok%400==0)){
wynik += tabmp[miesiac-1];
}
else{
wynik += tabm[miesiac-1];
}
miesiac++;
}
wynik+=a_dzien-dzien;
}
else if(miesiac==a_miesiac){
if(a_dzien<dzien)
wynik+=a_dzien-dzien;
}
else if(miesiac>a_miesiac){
if((a_rok%4==0 && !(a_rok%100==0)) || (a_rok%400==0)){
while(a_miesiac<miesiac){
wynik-=tabmp[miesiac];
miesiac++;
}
}
else{
while(a_miesiac<miesiac){
wynik-=tabm[miesiac];
miesiac--;
}
}
wynik+=a_dzien-dzien;
}
cout<<"Twoj wiek w dniach wynosi: "<<wynik<<endl;
cout<<"Twoj wiek w miesiacach wynosi: "<<int(wynik/30.416666666)<<endl;
cout<<"Twoj wiek wynosi: "<<int(wynik/365.2631578947368)<<endl;
return 0;
}