MeehoweCK

Untitled

May 16th, 2023
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.29 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. const double PI = 3.14159;
  6.  
  7. class Figura
  8. {
  9. public:
  10.     Figura() {}
  11.     virtual double obwod() = 0;
  12.     virtual double pole() = 0;
  13.     virtual void show() = 0;
  14. };
  15.  
  16. class Kolo : public Figura
  17. {
  18.     double promien;
  19. public:
  20.     Kolo(double r) : Figura(), promien(r) {}
  21.     double obwod() { return 2 * PI * promien; }
  22.     double pole() { return PI * promien * promien; }
  23.     void show() { cout << "Kolo o promieniu " << promien << " ma pole " << pole() << endl; }
  24. };
  25.  
  26. class Prostokat : public Figura
  27. {
  28. private:        // pola prywatne
  29.     int b;
  30.     string kolor_b;
  31. protected:      // pola chronione (są przekazywane do klas pochodnych)
  32.     int a;
  33.     string kolor_a;
  34.     float powierzchnia;
  35. public:     // metody publiczne
  36.     Prostokat();        // konstruktor domyślny (pusty)
  37.     Prostokat(int t_a, int t_b, string t_kolor_a, string t_kolor_b);
  38.     Prostokat(int t_a, string t_kolor_a);
  39.     virtual double obwod() { return 2 * (a + b); }
  40.     double pole() { return powierzchnia; }
  41.     virtual void show();
  42. };
  43.  
  44. Prostokat::Prostokat() : Figura(), a(1), b(1), kolor_a("czarny"), kolor_b("czarny"), powierzchnia(1) {}
  45.  
  46. Prostokat::Prostokat(int t_a, int t_b, string t_kolor_a, string t_kolor_b) : Figura(), a(t_a), b(t_b), kolor_a(t_kolor_a), kolor_b(t_kolor_b), powierzchnia(t_a * t_b) {}
  47.  
  48. Prostokat::Prostokat(int t_a, string t_kolor_a) : Figura(), a(t_a), b(t_a), kolor_a(t_kolor_a), kolor_b(t_kolor_a), powierzchnia(t_a * t_a) {}
  49.  
  50. void Prostokat::show()
  51. {
  52.     cout << "Prostokat o bokach dlugosci " << a << " i " << b << " w kolorach " << kolor_a << " i " << kolor_b << " o powierzchni " << powierzchnia << endl;
  53. }
  54.  
  55. class Kwadrat : public Prostokat
  56. {
  57.     /*pola dziedziczone od klasy Prostokat:
  58.     protected:      // pola chronione (są przekazywane do klas pochodnych)
  59.     int a;
  60.     string kolor_a;
  61.     float powierzchnia;*/
  62. public:
  63.     Kwadrat() : Prostokat() {}
  64.     Kwadrat(int bok) : Prostokat(bok, "czarny") {}
  65.     double obwod() { return 4 * a; }
  66.     void show() { cout << "kwadrat o boku " << a << " i powierzchni " << pole() << endl; }
  67. };
  68.  
  69. int main()
  70. {
  71.     Figura* tab[7];
  72.     for (short i = 0; i < 3; ++i)
  73.         tab[i] = new Prostokat;
  74.     for (short i = 3; i < 6; ++i)
  75.         tab[i] = new Kolo(i);
  76.     tab[6] = new Kwadrat(3);
  77.  
  78.     for (short i = 0; i < 7; ++i)
  79.         tab[i]->show();
  80.  
  81.     for (short i = 0; i < 7; ++i)
  82.         delete tab[i];
  83.     return 0;
  84. }
Add Comment
Please, Sign In to add comment