Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.72 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4.  
  5. using namespace std;
  6.  
  7. class Figura
  8. {
  9. protected:
  10. double obwod{0};
  11.  
  12. public:
  13. virtual void oblicz_obwod()=0;
  14. virtual void wypisz() const=0;
  15. virtual ~Figura(){}
  16. };
  17.  
  18. class Prostokat : public Figura
  19. {
  20. protected:
  21. double bok1;
  22. double bok2;
  23.  
  24. public:
  25. Prostokat(double, double);
  26. void wypisz() const override;
  27. virtual void ustaw_bok1(double);
  28. virtual void ustaw_bok2(double);
  29. void oblicz_obwod() override;
  30. };
  31.  
  32. class Kwadrat : public Prostokat
  33. {
  34. public:
  35. Kwadrat(double);
  36. void wypisz() const override;
  37. void ustaw_bok1(double) override;
  38. void ustaw_bok2(double) override;
  39. };
  40.  
  41. //================================================================
  42.  
  43. int main()
  44. {
  45. srand(time(nullptr));
  46. Prostokat *tab[]=
  47. {
  48. new Prostokat(rand()%30-5,rand()%30-5),
  49. new Kwadrat(rand()%30-5),
  50. new Kwadrat(rand()%30-5),
  51. new Prostokat(rand()%30-5,rand()%30-5)
  52. };
  53. int rozmiar=sizeof(tab)/sizeof(*tab);
  54. for(int i=0; i<rozmiar; ++i)
  55. {
  56. cout<<"\n---------------------------------------------------------";
  57. cout<<"\n"<<i+1<<".\n";
  58. tab[i]->wypisz();
  59. cout<<"\nZmiany\n";
  60. tab[i]->ustaw_bok1((rand()%100-20)/10.0);
  61. tab[i]->ustaw_bok2((rand()%100-20)/10.0);
  62. tab[i]->wypisz();
  63. }
  64. cout<<"\n---------------------------------------------------------\n";
  65. for(int i=0; i<rozmiar; ++i)
  66. delete tab[i];
  67.  
  68. return 0;
  69. }
  70.  
  71. //================================================================
  72.  
  73. void Prostokat::wypisz() const
  74. {
  75. if(this->bok1!=0 && this->bok2!=0)
  76. {
  77. cout<<"Prostokat o bokach: "<<this->bok1<<", "<<this->bok2<<"; ";
  78. }
  79. else
  80. cout<<"Blad!!! Boki prostokata: "<<this->bok1<<", "<<this->bok2<<"; ";
  81. }
  82.  
  83. void Prostokat::ustaw_bok1(double x)
  84. {
  85. if (x>0)
  86. {
  87. this->bok1=x;
  88. }
  89. }
  90.  
  91. void Prostokat::ustaw_bok2(double x)
  92. {
  93. if (x>0)
  94. {
  95. this->bok2=x;
  96. }
  97. }
  98.  
  99. void Kwadrat::ustaw_bok1(double a)
  100. {
  101. if(a>0)
  102. {
  103. bok1=a;
  104. bok2=a;
  105. }
  106. }
  107.  
  108. void Kwadrat::ustaw_bok2(double a)
  109. {
  110. if(a>0)
  111. {
  112. bok1=a;
  113. bok2=a;
  114. }
  115. }
  116.  
  117. Prostokat::Prostokat(double a,double b)
  118. :bok1(a>0?a:0),bok2(b>0?b:0)
  119. { }
  120.  
  121. //skladowe Klasy Kwadrat
  122. Kwadrat::Kwadrat(double arg)
  123. :Prostokat(arg,arg)
  124. {}
  125.  
  126. void Kwadrat::wypisz() const
  127. {
  128.  
  129. if(this->bok1!=0 && this->bok1==this->bok2)
  130. {
  131. cout<<"Kwadrat o boku: "<<this->bok1<<"; ";
  132. }
  133. else
  134. cout<<"Blad!!! Boki kwadratu: "<<this->bok1<<", "<<this->bok2<<"; ";
  135. }
  136.  
  137. void Prostokat::oblicz_obwod()
  138. {
  139. obwod=bok1*bok2;
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement