Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <math.h>
- using namespace std;
- // ----------------------------------------------------------------------------
- // a)
- class Figura
- {
- public:
- virtual double pole() = 0;
- virtual double obwod() = 0; // code '= 0' and '{ }' is not equal
- virtual void info() { };
- };
- // ----------------------------------------------------------------------------
- // b)
- class Kwadrat : public Figura
- {
- double a;
- public:
- Kwadrat( double dl_boku )
- {
- a = dl_boku;
- }
- double pole()
- {
- return a*a;
- }
- double obwod()
- {
- return 4*a;
- }
- void info(bool bok = true, char pole = false, bool obwod = false)
- {
- if(bok)
- cout << "Bok kwadratu: " << a << endl;
- if(pole)
- cout << "Pole kwadratu: " << this->pole() << endl;
- // this - gdy zostanie stworzony obiekt typu Kwadrat (z przepisu), to
- // sіowem "this" moїna odwoіywaж siк do akualnej instancji obiektu, czyli samego siebie
- if(obwod)
- cout << "Obwod kwadratu: " << this->obwod() << endl;
- cout << endl;
- }
- };
- // ----------------------------------------------------------------------------
- class Prostokant : public Figura
- {
- public:
- double a; // should be private:
- double b;
- Prostokant() { a = 0; b = 0; }
- Prostokant( double c, double d )
- {
- a = c;
- b = d;
- }
- double pole()
- {
- return a*b;
- }
- double obwod()
- {
- return 2*(a + b);
- }
- void info(bool bok = true, bool pole = false, bool obwod = false)
- {
- if(bok)
- cout << "Bok a: " << a << "\tb: " << b << endl;
- if(pole)
- cout << "Pole prostakanta: " << this->pole() << endl;
- if(obwod)
- cout << "Obwod prostakanta: " << this->obwod() << endl;
- cout << endl;
- }
- };
- // ----------------------------------------------------------------------------
- class Kolo : public Figura
- {
- public:
- double r; // should be private:, but in inheriting in class Staozek ends fault
- Kolo( void ) { r = 0; }
- Kolo( double x ) { r = x; }
- double pole() { return M_PI*r*r; }
- double obwod() { return 2*M_PI*r; }
- void info(bool promien = 0, bool pole = 1, bool obwod = 0)
- {
- if(promien)
- cout << "Promieс: " << r << endl;
- if(pole)
- cout << "Pole kola: " << this->pole() << endl;
- if(obwod)
- cout << "Obwod kola: " << this->obwod() << endl;
- cout << endl;
- }
- };
- // ----------------------------------------------------------------------------
- // c)
- class Szescian : public Figura
- {
- private:
- double a;
- public:
- Szescian( double x )
- {
- a = x;
- }
- // -------------------------------------------------
- double pole() { return 6*a*a; }
- double obwod() { return 12*a; }
- double objetosc() { return pow( a, 3 ); }
- void info(bool bok = true, bool objetosc = true, bool pole = false, bool obwod = false )
- {
- if(bok)
- cout << "Bok szescianu a: " << a << endl;
- if(objetosc)
- cout << "Objetosc szescianu: " << this->objetosc() << endl;
- if(pole)
- cout << "Pole szescianu: " << this->pole() << endl;
- if(obwod)
- cout << "Obwod szescianu: " << this->obwod() << endl;
- cout << endl;
- }
- };
- // ----------------------------------------------------------------------------
- // d)
- class Prostopadloscian : public Prostokant
- {
- private:
- Prostokant podstawa;
- double H;
- public:
- Prostopadloscian( double x, double y, double z )
- {
- podstawa.a = x;
- podstawa.b = y;
- H = z;
- }
- double objetosc()
- {
- return podstawa.pole() * H;
- }
- void info(bool bok = true, bool objetosc = true)
- {
- if(bok)
- cout << "Bok a: " << podstawa.a << "\tb: " << podstawa.b << "\tH: " << H << endl;
- if(objetosc)
- cout << "Objetosc prostopadloscianu: " << this->objetosc() << endl;
- cout << endl;
- }
- };
- // ----------------------------------------------------------------------------
- class Stozek : public Kolo
- {
- private:
- Kolo podstawa;
- double H;
- public:
- Stozek( double r, double wysokosc )
- {
- podstawa.r = r;
- H = wysokosc;
- }
- double objetosc()
- {
- return podstawa.pole() * H / 3;
- }
- void info(bool promnien = false, bool podstawa = 1, bool objetosc = true)
- {
- // podstawa.
- if(promnien)
- cout << "Promien: " << this->podstawa.r << "\tH: " << H << endl;
- // podstawa przepisu na klasк, a nie z parametru funkcji, dziкki "this->"
- if(podstawa)
- cout << "Podstawa: " << this->podstawa.pole() << endl;
- if(objetosc)
- cout << "Objetosc stozek: " << this->objetosc() << endl; // this-> wskazuje na aktualna klase
- cout << endl;
- }
- };
- // ----------------------------------------------------------------------------
- int main(){
- Kwadrat k(4);
- k.info(true, true, true);
- Prostokant p(4,4);
- p.info(1, 1, 1);
- // Kolo
- Szescian s(3);
- s.info();
- Prostopadloscian przestrzenna(69,17,1);
- przestrzenna.info();
- Stozek stozek( 4, 5 );
- stozek.info();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement