Pierwszy program C++


(Mayron) #1

Siema, ostatnio zainteresowałem się językiem C++ i coś zamierzam robić w tym kierunku w najbliższym czasie i jak na razie chcę stworzyć coś takiego, że po wpisaniu daty urodzenia i aktualnej daty program poda nam dokładną ilość dni jaką przeżyliśmy. Siedzę nad tym już dobre kilka godzin i wymajstrowałem coś takiego:

#include 

#include 

#include 


using namespace std; 


int main(int argc, char *argv[]) 

 { 

int rok,miesiac,dzien,arok,amiesiac,adzien,wynik; 

string znak;     

cout<<"Podaj rok urodzenia."<
cin>>rok; 

cout<<"Podaj numer miesiaca, w ktorym sie urodziles."<
cin>>miesiac; 

cout<<"Podaj dzien, w ktorym sie urodziles."<
cin>>dzien; 

cout<<"Podaj aktualny rok"<
cin>>arok; 

cout<<"Podaj aktualny miesiac"<
cin>>amiesiac; 

cout<<"Podaj aktualny dzien."<
cin>>adzien; 

cout<<"Co chcesz teraz zrobic?"<
cout<<"Wpisz 1 aby dowiedziec sie ile lat zyjesz"<
cout<<"Wpisz 2 aby dowiedziec sie ile miesiecy zyjesz"<
cout<<"Wpisz 3 aby dowiedziec sie ile dni zyjesz"<
cin>>znak; 

if(znak=="1") 

{ 

wynik=arok-rok;               

}               

if (znak=="2") 

{ 

wynik=(arok-rok)*(12-(12-amiesiac));               

} 

if (znak=="3") 

{ 

wynik=(arok-rok)*365-(12-amiesiac*(31,28,31,30,31,30,31,31,30,31,30,31));               

} 

cout<<"Wynik wynosi:"<



   system("PAUSE"); 

   return EXIT_SUCCESS; 

}

Jest to praktycznie pierwsze moje spotkanie z C++ i jestem zupełnie początkujący :stuck_out_tongue:

Ale nie mam zielonego pojęcia co zrobić aby program uwzględniał lata przestępne czy coś... Po prostu zawsze myli się o te 100dni przy mojej dacie... Im ktoś się wcześniej urodzi tym pomyłka będzie większa... Pomożecie mi jakoś z tym programem? Robię go na podstawie jakiegoś kalkulatora znalezionego w internecie :stuck_out_tongue: Wcześniej na jego podstawie zrobiłem test A, B, C ale z tym nie miałem problemów.


(Sawyer47) #2

No cóż, widać że nie znasz C++ zbyt dobrze. Co wg Ciebie robi ten kod:

(arok-rok)*365-(12-amiesiac*(31,28,31,30,31,30,31,31,30,31,30,31));

Bo ja Ci powiem, że jest on równoważny temu, a na pewno nie o to CI chodziło:

(arok-rok)*365-(12-amiesiac*31);

Kod jest składniowo poprawny, ale nie robi tego o czym piszesz. Tyle, że to nie kwestia znajomości C++ (poza powyższym kodem), a kwestia algorytmu. Weź może zwyczajnie kartkę i ołówek i napisz sobie jakie obliczenia trzeba by wykonać. A do tego wymagana jest tylko znajomość podstaw arytmetyki i znajomości kalendarza.


(Mayron) #3

Tylko jak uwzględnić lata przestępne? Po kolei mam wszystko wypisywać? ;p Po prostu nie mam pojęcia jak to wszystko zapisać w Dev C++. Kolega jeden mi napisał, że lepiej by to wyglądało tak:

include 

#include 

#include 


using namespace std; 


int main(int argc, char *argv[]) 

{ 

int i=0,dzien=0,miech=0,rok=0,prz=0,suma=0,luty=0,prze=0; 

int tdzien=0,tmiech=0,trok=0; 

cout<<"Podaj dzien urodzin:"<
cin>>dzien; 

cout<<"Podaj miesiac urodzin:"<
cin>>miech; 

cout<<"Podaj rok urodzin:"<
cin>>rok; 

cout<<"Podaj dzisiejsza date"<
cout<<"Podaj dzien:"<
cin>>tdzien; 

cout<<"Podaj miesiac:"<
cin>>tmiech; 

cout<<"Podaj rok:"<
cin>>trok; 


for(i=rok;i
{ 

prz=rok % 4; 

if (prz==0) suma=suma+366; 

else 

suma=suma+365; 

cout<
cout<
} 

prze=trok % 4; 

if (prze==0) luty=29; 

else 

luty=28; 


int miesiace[12]={31,luty,31,30,31,30,31,31,30,31,30,31}; //obliczanie miesiecy 

if (tmiech>miech) 

{ 

for(i=miech;i
suma=suma+miesiace[i]; 

} 

else 

{ 

for(i=tmiech;i
suma=suma-miesiace[i]; 

} 


suma=suma+tdzien; 


cout<<"Zyjesz juz "<






   system("PAUSE"); 

   return EXIT_SUCCESS; 

} [/code]

Tylko, że w tym wszystkiego nie rozumiem a tam rozumiem :stuck_out_tongue:


([alex]) #4

A nie prościej skonwertować obie daty do formatu systemowego, odjąć jedną od drugiej i podzielić na dni, lata lub miesiące?