[Programowanie obiektowe] Program wykonuje złe obliczenia
Ostatnio zmodyfikowano 2010-08-07 21:31
huberthx Temat założony przez niniejszego użytkownika |
[Programowanie obiektowe] Program wykonuje złe obliczenia » 2010-07-05 23:04:37 Witam. Jestem tutaj nowy i to mój pierwszy post. Zaznaczam że dopiero się uczę języka c++. Pisze program który ma symulować życie ssaków i ryb. Będzie on polegał na tym że użytkownik będzie wpisywał ilość tlenu którą będzie posiadało otoczenie, ilość ssaków i ryb a efektem końcowym jego działania będzie podana długość życia ssaków i ryb oraz ilość jaka z nich przeżyje po uwzględnieniu ilości tlenu jaką otrzymają od wody i atmosfery. Próba napisania całego programu od początku do końca skończyła się ogromną ilością błędów podczas kompilacji. Dlatego postanowiłem że będę pisał program stopniowo, obserwował jego działania i w ten sposób chcę uniknąć wielu błędów. Problem pojawił się na samym początku. Program po otrzymaniu pewnej ilości tlenu od użytkownika odpowiednio przelicza ile zostanie go w otoczeniu ale gdy chcę ten tlen przekazać dla wody wyniki jakie otrzymuję całkowicie mijają się z działaniem jakie wykonałem (chodzi o funkcję pobierztlenodotoczenia). Oto kod: klasy: class otoczenie { public: float tlen; float tlenatmosfera; float pobierztlen(); }; class woda : public otoczenie { public: float tleniwoda; float pobierztlenodotoczenia(); }; funkcje: float otoczenie::pobierztlen() { tlenatmosfera =( tlen * 0.6 ); }; float woda::pobierztlenodotoczenia() { tleniwoda =( tlenatmosfera / 2 ); };
#include <iostream> #include <conio.h> #include "klasy.h" #include "funkcje.cpp"
main() { otoczenie otoczenieobiekt; woda wodaobiekt; std::cin >> otoczenieobiekt.tlen; otoczenieobiekt.pobierztlen(); wodaobiekt.pobierztlenodotoczenia(); std::cout << "W atmosferze zostalo " << otoczenieobiekt.tlenatmosfera << " tlenu." << std::endl; std::cout << "W wodzie jest " << wodaobiekt.tleniwoda << " tlenu." << std::endl; getch(); };
Za pomoc dziękuję. |
|
DejaVu |
» 2010-07-05 23:21:21 Utworzyłeś metody które nie zwracają wartości. Jeżeli uczysz się programowania to nie powinieneś zaczynać od programowania obiektowego.
/edit: Poza tym operujesz na różnych obiektach i każdy obiekt ma inne dane, więc dostajesz wyniki nieoczekiwane. |
|
Pirotechnik |
» 2010-07-06 11:56:37 korzystaj z using namespace std; albo: using std::cout; |
|
lenrokskate |
» 2010-07-06 11:59:21 @Pirotechnik nie odzywaj się, namespacy są po to, żeby się nazwy nie biły a ty mu każesz dawać usingi poprawnie nie powinno się używać using namespace ani tym podobnych, zobaczysz jak będziesz miał większy projekt i np. napiszesz własną funkcję do wyśweitlania tekstu to będziesz miał np.: std::cout << "Napis do standartowego couta" << std::endl; LenrokSkate::cout << "Napis do własnego couta" LenrokSkate::endl;
|
|
huberthx Temat założony przez niniejszego użytkownika |
» 2010-08-07 21:31:49 Dziękuję za pomoc. Problem rozwiązany. |
|
« 1 » |