MeehoweCK

Untitled

Jan 9th, 2023
926
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.75 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. const double PI = 3.14159;
  6.  
  7. class Figura        // klasa bazowa
  8. {
  9. public:
  10.     Figura();
  11.     virtual double pole() = 0;      // metoda czysto wirtualna (sprawia, że klasa Figura jest klasą abstrakcyjną)
  12.     virtual double obwod() = 0;
  13.     virtual void wypisz_dane() = 0;
  14. };
  15.  
  16. Figura::Figura() {}
  17.  
  18. class Prostokat : public Figura     // klasa pochodna
  19. {
  20. protected:      // są dziedziczone
  21.     double a;
  22. private:        // nie są dziedziczone
  23.     double b;
  24. public:
  25.     Prostokat(double, double);      // konstruktor
  26.     void podaj_dlugosci_bokow();
  27.     virtual double pole();
  28.     virtual double obwod();
  29.     virtual void wypisz_dane();
  30. };
  31.  
  32. class Kolo : public Figura
  33. {
  34.     double promien;
  35. public:
  36.     Kolo(double r);
  37.     void podaj_dlugosc_promienia();
  38.     double pole();
  39.     double obwod();
  40.     void wypisz_dane();
  41. };
  42.  
  43. class Kwadrat : public Prostokat
  44. {
  45.     // kwadrat dziedziczy od prostkąta wszystko co nie jest prywatne
  46. public:
  47.     Kwadrat(double x);
  48.     void podaj_dlugosc_boku();
  49.     double pole();
  50.     double obwod();
  51.     void wypisz_dane();
  52. };
  53.  
  54. Kwadrat::Kwadrat(double x) : Prostokat(x, x) {}
  55.  
  56. void Kwadrat::podaj_dlugosc_boku()
  57. {
  58.     cout << "Podaj dlugosc boku: ";
  59.     cin >> a;
  60. }
  61.  
  62. double Kwadrat::pole()
  63. {
  64.     return a * a;
  65. }
  66.  
  67. double Kwadrat::obwod()
  68. {
  69.     return 4 * a;
  70. }
  71.  
  72. void Kwadrat::wypisz_dane()
  73. {
  74.     cout << "Kwadrat o boku " << a << " ma obwod " << obwod() << " i pole " << pole() << endl;
  75. }
  76.  
  77. Kolo::Kolo(double r) : Figura(), promien(r) {}
  78.  
  79. void Kolo::podaj_dlugosc_promienia()
  80. {
  81.     cout << "Podaj dlugosc promienia: ";
  82.     cin >> promien;
  83. }
  84.  
  85. double Kolo::pole()
  86. {
  87.     return PI * promien * promien;
  88. }
  89.  
  90. double Kolo::obwod()
  91. {
  92.     return 2 * PI * promien;
  93. }
  94.  
  95. void Kolo::wypisz_dane()
  96. {
  97.     cout << "Kolo o promieniu " << promien << " ma obwod " << obwod() << " i pole " << pole() << endl;
  98. }
  99.  
  100. Prostokat::Prostokat(double x, double y) : Figura(), a(x), b(y) {}
  101.  
  102. void Prostokat::podaj_dlugosci_bokow()
  103. {
  104.     cout << "Podaj dlugosci dwoch bokow prostokata: ";
  105.     cin >> a >> b;
  106. }
  107.  
  108. double Prostokat::pole()
  109. {
  110.     return a * b;
  111. }
  112.  
  113. double Prostokat::obwod()
  114. {
  115.     return 2*(a + b);
  116. }
  117.  
  118. void Prostokat::wypisz_dane()
  119. {
  120.     cout << "Prostokat o bokach " << a << " i " << b << " ma obwod " << obwod() << " oraz pole " << pole() << endl;
  121. }
  122.  
  123. int main()
  124. {
  125.     Figura* tablica[3];
  126.     tablica[0] = new Kwadrat(3.7);  // dynamiczne przypisanie do wskaźnika obiektu klasy Kwadrat
  127.     tablica[1] = new Kolo(5.8);
  128.     tablica[2] = new Prostokat(1.8, 19.3);
  129.  
  130.     for(short i = 0; i < 3; ++i)
  131.         tablica[i]->wypisz_dane();
  132.     for(short i = 0; i < 3; ++i)
  133.         delete tablica[i];      // zwolnienie pamięci
  134.     return 0;
  135. }
Advertisement
Add Comment
Please, Sign In to add comment