Advertisement
Mite123

OOp igroteka

May 24th, 2020
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.07 KB | None | 0 0
  1. #include <iostream>
  2. #include<cstring>
  3. #include <cmath>
  4. using namespace std;
  5.  
  6. class Igrachka {
  7. public:
  8.     virtual float getVolumen() = 0;
  9.     virtual float getMasa() = 0;
  10.     //дополнително барање 1
  11.     virtual float getPlostina() = 0;
  12. };
  13.  
  14. class Forma {
  15. protected:
  16.     char boja[100];
  17.     int gustina;
  18. public:
  19.     Forma() {}
  20.     Forma(char* b, int g) {
  21.         strcpy(boja, b);
  22.         gustina = g;
  23.     }
  24.     // да се имплементираат потребните методи
  25.  
  26. };
  27.  
  28. class topka:public Forma,public Igrachka{
  29. private:
  30.     int radius;
  31. public:
  32.     topka() {}
  33.     topka(char *b,int g,int r):Forma(b,g) {
  34.         radius = r;
  35.     }
  36.     float pi = 3.14;
  37.     float getMasa(){
  38.         return getVolumen() * gustina;
  39.     }
  40.     float getVolumen() {
  41.         return pi * 4 / 3 * radius*radius*radius;
  42.     }
  43.     float getPlostina() {
  44.         return 4 * pi * pow(radius, 2);
  45.     }
  46. };
  47.  
  48. class kocka:public Forma,public Igrachka{
  49. private:
  50.     int visina, sirina, dlabocina;
  51. public:
  52.     kocka() {}
  53.     kocka(char *b,int g,int vis,int sir,int dlab):Forma(b,g) {
  54.         visina = vis;
  55.         sirina = sir;
  56.         dlabocina = dlab;
  57.     }
  58.     float pi = 3.14;
  59.     float getMasa() {
  60.         return getVolumen() * gustina;
  61.     }
  62.     float getVolumen() {
  63.         return visina * sirina * dlabocina;
  64.     }
  65.     float getPlostina() {
  66.         return 2 * (visina * sirina + visina * dlabocina + sirina * dlabocina);
  67.     }
  68. };
  69.  
  70.  
  71. int main() {
  72.     int n;
  73.     cin >> n;
  74.     int radius, visina, sirina, dolzina, gustina;
  75.     char boja[50];
  76.     //vnesi informacii za kupche
  77.     Igrachka** kupche = new Igrachka * [n];
  78.     int p;
  79.     for (int i = 0; i < n; i++) {
  80.         cin >> p;
  81.         if (p == 1) {
  82.             cin >> boja >> gustina >> radius;
  83.             kupche[i] = new topka(boja, gustina, radius);
  84.         }
  85.         else if (p == 2) {
  86.             cin >> boja >> gustina >> visina >> sirina >> dolzina;
  87.             kupche[i] = new kocka(boja, gustina, visina, sirina, dolzina);
  88.         }
  89.     }
  90.  
  91.     //vnesi informacii za igrachkata na
  92.     cin >> boja >> gustina >> visina >> dolzina >> sirina;
  93.     kocka petra(boja, gustina, visina, sirina, dolzina);
  94.     double maxMasa;
  95.     for (int i = 0; i < n; i++) {
  96.         maxMasa += kupche[i]->getMasa();
  97.     }
  98.     if (maxMasa > petra.getMasa())
  99.         cout << "DA" << endl;
  100.     else
  101.         cout << "NE" << endl;
  102.     //baranje 1
  103.     double maxvolumen = kupche[0]->getVolumen();
  104.     for (int i = 1; i < n; i++)
  105.     {
  106.         if (maxvolumen < kupche[i]->getVolumen())
  107.         {
  108.             maxvolumen = kupche[i]->getVolumen();
  109.         }
  110.     }
  111.     cout << "Razlikata e: " << abs(maxvolumen - petra.getVolumen()) << endl;
  112.     //baranje 2
  113.  
  114.     //дополнително барање 2
  115.     double minPlostina = kupche[0]->getPlostina();
  116.     for (int i = 1; i < n; i++) {
  117.         if (minPlostina > kupche[i]->getPlostina())
  118.             minPlostina = kupche[i]->getPlostina();
  119.     }
  120.     cout << "Razlikata e: " << abs(petra.getPlostina()-minPlostina) << endl;
  121.     return 0;
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement