andrzejek97 Temat założony przez niniejszego użytkownika |
» 2017-04-05 21:57:18 za wcześniejsze przepraszam, telefon świruje przy kopiowaniu #include<iostream> #include<cmath> using namespace std;
class Point { float x, y; public: Point( float x, float y ) { this->x = x; this->y = y; } float zwrocX() { return x; } float zwrocY() { return y; } }; class Rectangle { Point & m_LeftUp; Point & m_RightDown; public: Rectangle( Point leftUp, Point rightDown ) : m_LeftUp( leftUp ) , m_RightDown( rightDown ) { } float getArea() { return abs(( m_LeftUp.zwrocX() - m_RightDown.zwrocX() ) *( m_LeftUp.zwrocY() - m_RightDown.zwrocY() ) ); } }; class Squere : public Rectangle { public: Squere( Point leftUp, Point rightDown ) : Rectangle( leftUp, rightDown ) { } Squere( Point leftUp, float width ) : Rectangle( leftUp, Point( leftUp.zwrocX() - width, leftUp.zwrocY() - width ) ) { } };
int main() { Point pierwszy( 4, 4 ); Point drugi( 2, 3 ); cout << "Pierwsza wspolrzedna = " << pierwszy.zwrocX() << '\n'; Rectangle prostokat( pierwszy, drugi ); cout << "Pole prostokata = " << prostokat.getArea(); float szerokosc; cout << "\nPodaj szerokosc kwadratu: "; cin >> szerokosc; Point kwadratpunkt( 1, 1 ); Squere kwadrat( kwadratpunkt, szerokosc ); cout << "Pole kwadratu= " << kwadrat.getArea(); return 0; }
|
|
michal11 |
» 2017-04-05 22:16:50 Point & m_LeftUp; Point & m_RightDown; public: Rectangle( Point leftUp, Point rightDown ) :( m_LeftUp( leftUp ), m_RightDown( rightDown ) ) { }
zapisujesz tutaj referencję do zmiennych tymczasowych, nic dziwnego, że możesz dostawać jakieś śmieci, odwoływanie się do takich tymczasowych obiektów jest źródłem problemów. |
|
andrzejek97 Temat założony przez niniejszego użytkownika |
» 2017-04-05 22:26:43 okej, po prostu, bardzo dziękuję za pomoc ;) Point m_LeftUp; Point m_RightDown; |
|
mokrowski |
» 2017-04-05 23:09:53 Jeszcze kilka poprawek związanych z konwencjami, bezpiecznym wywołaniem i niepotrzebnymi kopiami obiektów: #include <iostream> #include <cmath>
using namespace std;
class Point { public: Point( float x, float y ) { this->x = x; this->y = y; } float zwrocX() const { return x; } float zwrocY() const { return y; } private: float x, y; };
class Rectangle { public: Rectangle( const Point & leftUp, const Point & rightDown ) : m_LeftUp( leftUp ) , m_RightDown( rightDown ) { } float getArea() const { return abs(( m_LeftUp.zwrocX() - m_RightDown.zwrocX() ) * ( m_LeftUp.zwrocY() - m_RightDown.zwrocY() ) ); } private: Point m_LeftUp; Point m_RightDown; };
class Squere : public Rectangle { public: Squere( const Point & leftUp, const Point & rightDown ) : Rectangle( leftUp, rightDown ) { } Squere( const Point & leftUp, float width ) : Rectangle( leftUp, Point( leftUp.zwrocX() - width, leftUp.zwrocY() - width ) ) { } };
int main() { Point pierwszy( 4, 4 ); Point drugi( 2, 3 ); cout << "Pierwsza wspolrzedna = " << pierwszy.zwrocX() << '\n'; Rectangle prostokat( pierwszy, drugi ); cout << "Pole prostokata = " << prostokat.getArea(); float szerokosc; cout << "\nPodaj szerokosc kwadratu: "; cin >> szerokosc; Point kwadratpunkt( 1, 1 ); Squere kwadrat( kwadratpunkt, szerokosc ); cout << "Pole kwadratu = " << kwadrat.getArea() << '\n'; }
|
|
andrzejek97 Temat założony przez niniejszego użytkownika |
» 2017-04-06 12:27:51 Bardzo dziękuję za pomoc i cierpliwość ;) |
|
1 « 2 » |