Program obliczający dokładny wiek w dniach, miesiącach i latach

0

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;
}

 
0
tkasperek napisał(a):

... że jeśli jest np. 20.10.2013, a urodziny są 22.11.2013 to jeszcze nie ma 18 lat ...
kurcze też mam z tym problemy, nie mam zielonego pojęcia jak z tego wyliczyć te 17 z kawalkiem lat.

1 użytkowników online, w tym zalogowanych: 0, gości: 1