Program do liczenia pola prostokata i dziwne śmieci na wyniku
Ostatnio zmodyfikowano 2013-12-05 19:06
lewozmywak Temat założony przez niniejszego użytkownika |
Program do liczenia pola prostokata i dziwne śmieci na wyniku » 2013-12-03 19:30:18 #include <iostream> #include <cstdlib> using namespace std;
class Prostokat { private: int dlugosc_boka_a; int dlugosc_boku_b; public: int getBokA(); int getBokB(); int setBokA( int dlugosc_boka_a ); int setBokB( int dlugosc_boku_b ); int wyliczPole(); };
int Prostokat::getBokA() { return dlugosc_boka_a; }
int Prostokat::getBokB() { return dlugosc_boku_b; }
int Prostokat::setBokA( int dlugosc_boku_a ) { Prostokat::dlugosc_boka_a = dlugosc_boka_a; }
int Prostokat::setBokB( int dlugosc_boku_b ) { Prostokat::dlugosc_boku_b = dlugosc_boku_b; }
int Prostokat::wyliczPole() { return dlugosc_boka_a * dlugosc_boku_b; }
int main() { cout << "Podaj bok a i b" << endl; int bok1 = 0; int bok2 = 0; Prostokat p; cin >> bok1; cin >> bok2; p.setBokA( bok1 ); p.setBokB( bok2 ); cout << "Pole Prostokata wynosi " << p.wyliczPole() << endl; return 0; }
Jest to ćwiczenie z moich zajęć... nie wiem co tu nie gra... zrobiłem to dokładnie według metod jakie nam pokazywał ćwiczeniowiec... dopiero wchodze w obiektówke i nie radze się za bardzo... co tu nie gra że mam dziwne wyniki? |
|
R3V0 |
» 2013-12-03 19:39:51 Najprawdopodobniej problemem są długie nazwy zmiennych bądź zmienne bok1 i bok2 ja to poprawiłem na coś takiego i działa #include <iostream> #include <cstdlib> using namespace std;
class Prostokat { private: int a; int b; public: int getBokA(); int getBokB(); void setBokA( int a ); void setBokB( int b ); int wyliczPole(); };
int Prostokat::getBokA() { return a; }
int Prostokat::getBokB() { return b; }
void Prostokat::setBokA( int a ) { this->a = a; }
void Prostokat::setBokB( int b ) { this->b = b; }
int Prostokat::wyliczPole() { int pole; pole = a * b; return pole; }
int main() { int a; int b; Prostokat p; cout << "Podaj bok a: " << endl; cin >> a; cout << "Podaj bok b: " << endl; cin >> b; p.setBokA( a ); p.setBokB( b ); cout << "Pole Prostokata wynosi " << p.wyliczPole() << endl; return 0; }
|
|
pekfos |
» 2013-12-03 19:44:29 int Prostokat::setBokA( int dlugosc_boku_a ) { Prostokat::dlugosc_boka_a = dlugosc_boka_a; } Problemem jest literówka w nazwie. |
|
R3V0 |
» 2013-12-03 19:49:29 zbyt długie nazwy zmiennych ustaliłeś sobie. skoro zaczynasz zabawę i chcesz wiedzieć do czego dana zmienna jest, używaj komentarzy
int a; //pierwszy bok prostokąta
aby sprawnie pisać obszerne programy upraszczaj zmienne. bynajmniej jak tak robię i mi to ułatwia życie :) |
|
pekfos |
» 2013-12-03 19:58:03 aby sprawnie pisać obszerne programy upraszczaj zmienne. bynajmniej jak tak robię i mi to ułatwia życie :) |
A za miesiąc "Wtf, od czego jest ta zmienna?!". Nazwy zmiennych zostaw w spokoju, mogą być (prawie) dowolne. Jeśli już się tego czepiać, to tylko dawania takich samych nazw argumentów i składowych. Przez to literówka nie została uznana przez kompilator za błąd, a już program nie działa. PS: Jak metoda nic nie zwraca, ustaw typ zwracany na void. W przeciwnym wypadku niezwrócenie wartości ma niezdefiniowane zachowanie. PS2: "bynajmniej" nie oznacza "przynajmniej". |
|
R3V0 |
» 2013-12-03 20:00:30 ja używam komentarzy przy deklaracji zmiennej i nie mam problemu z odczytaniem jej przeznaczenia po miesiącu czy nawet roku ;) a o tym void miałem też dopisać ale jestem lekko rozkojarzony bo pracuję nad swoim programikiem :)
PS. doczytałem znaczenie ;) dziękuję za informację :) |
|
lewozmywak Temat założony przez niniejszego użytkownika |
» 2013-12-05 19:06:26 wielkie dzięki za pomoc... fakt przy wklepywaniu długich nazw z klawiatury łatwo zrobić babola, a trudno później znaleźć taki błąd... |
|
« 1 » |