Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- const double PI = 3.14159;
- class Figura // klasa bazowa
- {
- public:
- Figura();
- virtual double pole() = 0; // metoda czysto wirtualna (sprawia, że klasa Figura jest klasą abstrakcyjną)
- virtual double obwod() = 0;
- virtual void wypisz_dane() = 0;
- };
- Figura::Figura() {}
- class Prostokat : public Figura // klasa pochodna
- {
- protected: // są dziedziczone
- double a;
- private: // nie są dziedziczone
- double b;
- public:
- Prostokat(double, double); // konstruktor
- void podaj_dlugosci_bokow();
- virtual double pole();
- virtual double obwod();
- virtual void wypisz_dane();
- };
- class Kolo : public Figura
- {
- double promien;
- public:
- Kolo(double r);
- void podaj_dlugosc_promienia();
- double pole();
- double obwod();
- void wypisz_dane();
- };
- class Kwadrat : public Prostokat
- {
- // kwadrat dziedziczy od prostkąta wszystko co nie jest prywatne
- public:
- Kwadrat(double x);
- void podaj_dlugosc_boku();
- double pole();
- double obwod();
- void wypisz_dane();
- };
- Kwadrat::Kwadrat(double x) : Prostokat(x, x) {}
- void Kwadrat::podaj_dlugosc_boku()
- {
- cout << "Podaj dlugosc boku: ";
- cin >> a;
- }
- double Kwadrat::pole()
- {
- return a * a;
- }
- double Kwadrat::obwod()
- {
- return 4 * a;
- }
- void Kwadrat::wypisz_dane()
- {
- cout << "Kwadrat o boku " << a << " ma obwod " << obwod() << " i pole " << pole() << endl;
- }
- Kolo::Kolo(double r) : Figura(), promien(r) {}
- void Kolo::podaj_dlugosc_promienia()
- {
- cout << "Podaj dlugosc promienia: ";
- cin >> promien;
- }
- double Kolo::pole()
- {
- return PI * promien * promien;
- }
- double Kolo::obwod()
- {
- return 2 * PI * promien;
- }
- void Kolo::wypisz_dane()
- {
- cout << "Kolo o promieniu " << promien << " ma obwod " << obwod() << " i pole " << pole() << endl;
- }
- Prostokat::Prostokat(double x, double y) : Figura(), a(x), b(y) {}
- void Prostokat::podaj_dlugosci_bokow()
- {
- cout << "Podaj dlugosci dwoch bokow prostokata: ";
- cin >> a >> b;
- }
- double Prostokat::pole()
- {
- return a * b;
- }
- double Prostokat::obwod()
- {
- return 2*(a + b);
- }
- void Prostokat::wypisz_dane()
- {
- cout << "Prostokat o bokach " << a << " i " << b << " ma obwod " << obwod() << " oraz pole " << pole() << endl;
- }
- int main()
- {
- Figura* tablica[3];
- tablica[0] = new Kwadrat(3.7); // dynamiczne przypisanie do wskaźnika obiektu klasy Kwadrat
- tablica[1] = new Kolo(5.8);
- tablica[2] = new Prostokat(1.8, 19.3);
- for(short i = 0; i < 3; ++i)
- tablica[i]->wypisz_dane();
- for(short i = 0; i < 3; ++i)
- delete tablica[i]; // zwolnienie pamięci
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment