masterm1nd99

novooo

May 9th, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.26 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. #include <cmath>
  4.  
  5. using namespace std;
  6.  
  7. class Igrachka {
  8. public:
  9. virtual float getVolumen() = 0;
  10. virtual float getMasa() = 0;
  11. //дополнително барање 1
  12. virtual float getPlostina()=0;
  13. };
  14.  
  15. class Forma {
  16. protected:
  17. char boja[100];
  18. int gustina;
  19. public:
  20. // да се имплементираат потребните методи
  21. Forma (){}
  22. Forma (char *boja, int gustina){
  23. strcpy(this->boja, boja);
  24. this->gustina=gustina;
  25. }
  26.  
  27. };
  28.  
  29. class Topka : public Forma, public Igrachka{
  30. private:
  31. int radius;
  32. public:
  33. Topka(){}
  34. Topka (char *boja, int gustina, int radius):Forma (boja, gustina) {
  35. this->radius=radius;
  36. }
  37. float getVolumen(){
  38. return ((4.0/3.0)*3.14*radius*radius*radius);
  39. }
  40. float getMasa(){
  41. return getVolumen()*gustina;
  42. }
  43. float getPlostina(){
  44. return (4*3.14*radius*radius);
  45. }
  46. ~Topka (){}
  47. };
  48.  
  49. class Kocka : public Forma, public Igrachka{
  50. private:
  51. int visina;
  52. int sirina;
  53. int dlabocina;
  54. public:
  55. Kocka (){}
  56. Kocka (char *boja, int gustina, int visina, int sirina, int dlabocina):Forma (boja, gustina) {
  57. this->visina=visina;
  58. this->sirina=sirina;
  59. this->dlabocina=dlabocina;
  60. }
  61. float getVolumen(){
  62. return (visina*sirina*dlabocina);
  63. }
  64. float getMasa(){
  65. return getVolumen()*gustina;
  66. }
  67. float getPlostina(){
  68. return (2*visina*sirina+2*dlabocina*sirina+2*dlabocina*visina);
  69. }
  70. ~Kocka (){}
  71.  
  72. };
  73.  
  74. void da_ne (Igrachka **igra, int n, float masa){
  75. int i;
  76. float vk=0;
  77. for (i=0; i<n; i++){
  78. vk+=igra[i]->getMasa();
  79. }
  80. if (vk>masa)
  81. cout<<"DA"<<endl;
  82. else
  83. cout<<"NE"<<endl;
  84. }
  85.  
  86. float maks(int n, Igrachka **igra)
  87. {
  88. float max=0;
  89. int i;
  90. for(i=0; i<n; i++)
  91. if(igra[i]->getVolumen()>max)
  92. max=igra[i]->getVolumen();
  93. return max;
  94. }
  95.  
  96. float mini(int n, Igrachka **igra){
  97. float min=igra[0]->getPlostina();
  98. int i;
  99. for (i=0; i<n; i++){
  100. if (min>igra[i]->getPlostina())
  101. min=igra[i]->getPlostina();
  102. }
  103. return min;
  104. }
  105.  
  106. int main(){
  107. //vnesi informacii za kupche
  108. int n, tip, gustina, visina, sirina, dlabocina, radius, i;
  109. char boja[100];
  110. cin>>n;
  111. Igrachka **kupche;
  112. kupche=new Igrachka*[n];
  113.  
  114. for (i=0; i<n; i++){
  115. cin>>tip;
  116. if (tip==1){
  117. cin>>boja>>gustina>>radius;
  118. kupche[i]=new Topka (boja, gustina, radius);
  119. }
  120. else if (tip==2){
  121. cin>>boja>>gustina>>visina>>sirina>>dlabocina;
  122. kupche[i]=new Kocka(boja, gustina, visina, sirina, dlabocina);
  123. }
  124. }
  125. //vnesi informacii za igrachkata na Petra
  126. cin>>boja>>gustina>>visina>>sirina>>dlabocina;
  127. Kocka petra(boja, gustina, visina, sirina, dlabocina);
  128.  
  129. //baranje 1
  130. da_ne (kupche, n, petra.getMasa());
  131.  
  132. //baranje 2
  133. cout<<"Razlikata e: "<<abs(petra.getVolumen()-maks(n, kupche))<<endl;
  134.  
  135. //дополнително барање 2
  136. cout<<"Razlikata e: "<<abs(petra.getPlostina()-mini(n, kupche))<<endl;
  137.  
  138. for (i=0; i<n; i++){
  139. delete kupche[i];
  140. }
  141. delete [] kupche;
  142.  
  143. return 0;
  144. }
Add Comment
Please, Sign In to add comment