Advertisement
Guest User

Untitled

a guest
May 25th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.47 KB | None | 0 0
  1. #include <iostream>
  2. #include <math.h>
  3.  
  4. using namespace std;
  5.  
  6. // ----------------------------------------------------------------------------
  7. // a)
  8. class Figura
  9. {
  10. public:
  11.     virtual double  pole()  = 0;
  12.     virtual double  obwod() = 0;    // code '= 0' and '{ }' is not equal
  13.     virtual void    info()  { };
  14. };
  15.  
  16. // ----------------------------------------------------------------------------
  17. // b)
  18. class Kwadrat : public Figura
  19. {
  20.     double a;
  21.  
  22. public:
  23.  
  24.     Kwadrat( double dl_boku )
  25.     {
  26.         a = dl_boku;
  27.     }
  28.  
  29.     double pole()
  30.     {
  31.         return a*a;
  32.     }
  33.     double obwod()
  34.     {
  35.         return 4*a;
  36.     }
  37.  
  38.     void info(bool bok = true, char pole = false, bool obwod = false)
  39.     {
  40.         if(bok)
  41.             cout << "Bok   kwadratu: " << a << endl;
  42.         if(pole)
  43.             cout << "Pole  kwadratu: " << this->pole() << endl;
  44. // this - gdy zostanie stworzony obiekt typu Kwadrat (z przepisu), to
  45. // sіowem "this" moїna odwoіywaж siк do akualnej instancji obiektu, czyli samego siebie
  46.         if(obwod)
  47.             cout << "Obwod kwadratu: " << this->obwod() << endl;
  48.  
  49.         cout << endl;
  50.     }
  51.  
  52. };
  53.  
  54. // ----------------------------------------------------------------------------
  55.  
  56. class Prostokant : public Figura
  57. {
  58.  
  59. public:
  60.  
  61.     double a;   // should be private:
  62.     double b;
  63.  
  64.     Prostokant() { a = 0; b = 0; }
  65.     Prostokant( double c, double d )
  66.     {
  67.         a = c;
  68.         b = d;
  69.     }
  70.  
  71.     double pole()
  72.     {
  73.         return a*b;
  74.     }
  75.     double obwod()
  76.     {
  77.         return 2*(a + b);
  78.     }
  79.  
  80.     void info(bool bok = true, bool pole = false, bool obwod = false)
  81.     {
  82.         if(bok)
  83.             cout << "Bok a: " << a << "\tb: " << b << endl;
  84.         if(pole)
  85.             cout << "Pole  prostakanta: " << this->pole() << endl;
  86.         if(obwod)
  87.             cout << "Obwod prostakanta: " << this->obwod() << endl;
  88.  
  89.         cout << endl;
  90.     }
  91.  
  92. };
  93.  
  94. // ----------------------------------------------------------------------------
  95.  
  96. class Kolo : public Figura
  97. {
  98.  
  99. public:
  100.  
  101.     double r;   // should be private:, but in inheriting in class Staozek ends fault
  102.  
  103.     Kolo( void ) { r = 0; }
  104.     Kolo( double x ) { r = x; }
  105.     double pole()    { return M_PI*r*r;   }
  106.     double obwod()   { return 2*M_PI*r;   }
  107.  
  108.     void info(bool promien = 0, bool pole = 1, bool obwod = 0)
  109.     {
  110.         if(promien)
  111.             cout << "Promieс: " << r << endl;
  112.         if(pole)
  113.             cout << "Pole  kola: " << this->pole() << endl;
  114.         if(obwod)
  115.             cout << "Obwod kola: " << this->obwod() << endl;
  116.  
  117.         cout << endl;
  118.     }
  119.  
  120. };
  121.  
  122. // ----------------------------------------------------------------------------
  123. // c)
  124.  
  125. class Szescian : public Figura
  126. {
  127. private:
  128.     double a;
  129.  
  130. public:
  131.  
  132.     Szescian( double x )
  133.     {
  134.         a = x;
  135.     }
  136.  
  137. // -------------------------------------------------
  138.  
  139.     double pole()       {   return 6*a*a; }
  140.     double obwod()      {   return 12*a; }
  141.     double objetosc()   {   return pow( a, 3 ); }
  142.  
  143.     void info(bool bok = true, bool objetosc = true, bool pole = false, bool obwod = false )
  144.     {
  145.         if(bok)
  146.             cout << "Bok szescianu a: " << a << endl;
  147.         if(objetosc)
  148.             cout << "Objetosc szescianu: " << this->objetosc() << endl;
  149.         if(pole)
  150.             cout << "Pole  szescianu: " << this->pole() << endl;
  151.         if(obwod)
  152.             cout << "Obwod szescianu: " << this->obwod() << endl;
  153.  
  154.         cout << endl;
  155.     }
  156.  
  157. };
  158.  
  159. // ----------------------------------------------------------------------------
  160. // d)
  161. class Prostopadloscian  : public Prostokant
  162. {
  163. private:
  164.     Prostokant podstawa;
  165.     double H;
  166.  
  167. public:
  168.  
  169.     Prostopadloscian( double x, double y, double z )
  170.     {
  171.         podstawa.a = x;
  172.         podstawa.b = y;
  173.         H = z;
  174.     }
  175.  
  176.     double objetosc()
  177.     {
  178.         return podstawa.pole() * H;
  179.     }
  180.  
  181.     void info(bool bok = true, bool objetosc = true)
  182.     {
  183.         if(bok)
  184.             cout << "Bok a: " << podstawa.a << "\tb: " << podstawa.b << "\tH: " << H << endl;
  185.         if(objetosc)
  186.             cout << "Objetosc prostopadloscianu: " << this->objetosc() << endl;
  187.  
  188.         cout << endl;
  189.     }
  190.  
  191. };
  192. // ----------------------------------------------------------------------------
  193.  
  194. class Stozek  : public Kolo
  195. {
  196. private:
  197.     Kolo podstawa;
  198.     double H;
  199.  
  200. public:
  201.  
  202.     Stozek( double r, double wysokosc )
  203.     {
  204.         podstawa.r = r;
  205.         H = wysokosc;
  206.     }
  207.  
  208.     double objetosc()
  209.     {
  210.         return podstawa.pole() * H / 3;
  211.     }
  212.  
  213.     void info(bool promnien = false, bool podstawa = 1, bool objetosc = true)
  214.     {
  215. //        podstawa.
  216.         if(promnien)
  217.             cout << "Promien: " << this->podstawa.r << "\tH: " << H << endl;
  218. // podstawa przepisu na klasк, a nie z parametru funkcji, dziкki "this->"
  219.         if(podstawa)
  220.             cout << "Podstawa: " << this->podstawa.pole() <<  endl;
  221.         if(objetosc)
  222.             cout << "Objetosc stozek: " << this->objetosc() << endl;    // this-> wskazuje na aktualna klase
  223.  
  224.         cout << endl;
  225.     }
  226.  
  227. };
  228. // ----------------------------------------------------------------------------
  229.  
  230. int main(){
  231.  
  232.     Kwadrat k(4);
  233.     k.info(true, true, true);
  234.  
  235.  
  236.     Prostokant p(4,4);
  237.     p.info(1, 1, 1);
  238.  
  239.     // Kolo
  240.  
  241.     Szescian s(3);
  242.     s.info();
  243.  
  244.     Prostopadloscian przestrzenna(69,17,1);
  245.     przestrzenna.info();
  246.  
  247.     Stozek stozek( 4, 5 );
  248.     stozek.info();
  249.  
  250.     return 0;
  251. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement