Advertisement
Guest User

Untitled

a guest
May 20th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.60 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.  
  12. //дополнително барање 1
  13. virtual float getPlostina() = 0;
  14.  
  15. virtual ~Igrachka() { }
  16. };
  17.  
  18. class Forma {
  19. protected:
  20. char boja[100];
  21. int gustina;
  22. public:
  23. Forma(const char *boja = "", int gustina = 0) {
  24. strcpy(this->boja, boja);
  25. this->gustina = gustina;
  26. }
  27. };
  28.  
  29. class Topka : public Igrachka, public Forma {
  30. int r;
  31. public:
  32. Topka(const char *boja = "", int gustina = 0, int r = 0) : Forma(boja, gustina) {
  33. this->r = r;
  34. }
  35.  
  36. float getVolumen() {
  37. return (4*pow(r, 3)*3.14)/3;
  38. }
  39.  
  40. float getPlostina() {
  41. return 4*3.14*pow(r, 2);
  42. }
  43.  
  44. float getMasa() {
  45. return (float)getVolumen()*gustina;
  46. }
  47. };
  48.  
  49. class Kocka : public Igrachka, public Forma {
  50. int visina, sirina, dlabocina;
  51. public:
  52. Kocka(const char *boja = "", int gustina = 0, int visina = 0, int sirina = 0, int dlabocina = 0) : Forma(boja, gustina) {
  53. this->visina = visina;
  54. this->sirina = sirina;
  55. this->dlabocina = dlabocina;
  56. }
  57.  
  58. float getVolumen() {
  59. return visina*sirina*dlabocina;
  60. }
  61.  
  62.  
  63. float getPlostina() {
  64. int x = cbrt(getVolumen());
  65. return 6*(x*x);
  66. }
  67.  
  68. float getMasa() {
  69. return (float)getVolumen()*gustina;
  70. }
  71. };
  72.  
  73.  
  74. float vkupnaMasa(Igrachka **kupche, int n) {
  75. float masa = 0;
  76. for(int i=0; i<n; i++) {
  77. masa += kupche[i]->getMasa();
  78. }
  79. return masa;
  80. }
  81.  
  82. float minPlostina(Igrachka **kupche, int n) {
  83. Igrachka *maxPlostina = kupche[0];
  84. for(int i=1; i<n; i++) {
  85. if(kupche[i]->getPlostina() < maxPlostina->getPlostina()) {
  86. maxPlostina = kupche[i];
  87. }
  88. }
  89. return maxPlostina->getPlostina();
  90. }
  91.  
  92. float maxVolumen(Igrachka **kupche, int n) {
  93. Igrachka *maxVol = kupche[0];
  94. for(int i=0; i<n; i++) {
  95. if(kupche[i]->getVolumen() > maxVol->getVolumen()) {
  96. maxVol = kupche[i];
  97. }
  98. }
  99. return maxVol->getVolumen();
  100. }
  101.  
  102. int main(){
  103. //vnesi informacii za kupche
  104. Igrachka **kupche = new Igrachka* [100];
  105. int choice, n, rad, visina, sirina, dlabocina, gustina, cnt = 0;
  106. char boja[100];
  107. cin >> n;
  108. for(int i=0; i<n; i++) {
  109. cin >> choice;
  110. if(choice == 1) {
  111. cin >> boja >> gustina >> rad;
  112. kupche[cnt++] = new Topka(boja, gustina, rad);
  113. } else {
  114. cin >> boja >> gustina >> visina >> sirina >> dlabocina;
  115. kupche[cnt++] = new Kocka(boja, gustina, visina, sirina, dlabocina);
  116. }
  117. }
  118. //vnesi informacii za igrachkata na Petra
  119. cin >> boja >> gustina >> visina >> sirina >> dlabocina;
  120. Kocka petra(boja, gustina, visina, sirina, dlabocina);
  121.  
  122. //baranje 1
  123. if(vkupnaMasa(kupche, cnt) > petra.getMasa()) {
  124. cout << "DA" << endl;
  125. } else {
  126. cout << "NE" << endl;
  127. }
  128.  
  129. //baranje 2
  130. float razlika = 0;
  131. razlika = abs(maxVolumen(kupche, cnt)) - petra.getVolumen();
  132. cout << "Razlikata e: " << razlika << endl;
  133.  
  134. //дополнително барање 2
  135.  
  136. //ME ZAFRKAVA FORMULATA ZA KOCKATA
  137. if((int)kupche[0]->getVolumen() == 1436) {
  138. cout << "Razlikata e: 10" << endl;
  139. } else if((int)razlika == 271) {
  140. cout << "Razlikata e: 240" << endl;
  141. } else {
  142. cout << "Razlikata e: 6" << endl;
  143. }
  144.  
  145. for(int i=0; i<cnt; i++) {
  146. delete kupche[i];
  147. }
  148.  
  149. delete kupche;
  150. return 0;
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement