mvCode

Igroteka OOP

May 21st, 2020
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.95 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. #include <cmath>
  4. using namespace std;
  5. class Igrachka {
  6. public:
  7.     virtual float getVolumen() = 0;
  8.     virtual float getMasa() = 0;
  9.     virtual float getPlostina() = 0;
  10.     virtual ~Igrachka() {}
  11. };
  12. class Forma{
  13. protected:
  14.     char boja[100];
  15.     int gustina;
  16. public:
  17.     Forma(const char*boja=" ",int gustina=0)
  18.     {
  19.         strcpy(this->boja,boja);
  20.         this->gustina=gustina;
  21.     }
  22. };
  23. class Kocka:public Igrachka,public Forma
  24. {
  25. private:
  26.     int a,b,c;//a=visina, b=sirina c=dlabocina
  27. public:
  28.     Kocka(const char*boja=" ",int gustina=0,int a=0,int b=0,int c=0):Forma(boja,gustina)
  29.     {
  30.         this->a=a;
  31.         this->b=b;
  32.         this->c=c;
  33.     }
  34.     float getPlostina()
  35.     {
  36.         return 2*(a*b+b*c+c*a);
  37.     }
  38.     float getVolumen()
  39.     {
  40.         return a*b*c;
  41.     }
  42.     float getMasa()
  43.     {
  44.         return getVolumen()*gustina;
  45.     }
  46. };
  47. class Topka:public Igrachka,public Forma
  48. {
  49. private:
  50.     int rad;
  51. public:
  52.     Topka(const char*boja=" ",int gustina=0,int rad=0):Forma(boja,gustina)
  53.     {
  54.         this->rad=rad;
  55.     }
  56.     float getPlostina()
  57.     {
  58.         return (float) 4*3.14*rad*rad;
  59.     }
  60.     float getVolumen()
  61.     {
  62.         return (4.0/3) * 3.14 * rad * rad * rad;
  63.     }
  64.     float getMasa()
  65.     {
  66.         return getVolumen()*gustina;
  67.     }
  68. };
  69. void proverka(float masa_petra,Igrachka **kupce,int n)
  70. {
  71.     float vk=0;
  72.     for(int i=0;i<n;i++)
  73.     {
  74.         vk+=kupce[i]->getMasa();
  75.     }
  76.     if(vk<masa_petra)
  77.         cout<<"NE"<<endl;
  78.     else
  79.         cout<<"DA"<<endl;
  80. }
  81. float maxVolume(float volume_petra,Igrachka **kupce,int n)
  82. {
  83.     float max=-9999.999;
  84.     for(int i=0;i<n;i++)
  85.     {
  86.         if(max<kupce[i]->getVolumen())
  87.             max=kupce[i]->getVolumen();
  88.     }
  89.     return max;
  90. }
  91. float minPlostina(float plostina_petra,Igrachka **kupce,int n)
  92. {
  93.     float min=9999.999;
  94.     for(int i=0;i<n;i++)
  95.     {
  96.         if(min>kupce[i]->getPlostina())
  97.             min=kupce[i]->getPlostina();
  98.     }
  99.     return min;
  100. }
  101. int main(){
  102.     int n;
  103.     int control;
  104.     int a,b,c,rad,gustina;
  105.     char boja[30];
  106.     cin>>n;
  107.     Igrachka **kupche=new Igrachka*[n];
  108.     for(int i=0;i<n;i++)
  109.     {
  110.         cin>>control;
  111.         if(control==1)
  112.         {
  113.             cin>>boja>>gustina>>rad;
  114.             kupche[i]=new Topka(boja,gustina,rad);
  115.         }
  116.         if(control==2)
  117.         {
  118.             cin>>boja>>gustina>>a>>b>>c;
  119.             kupche[i]=new Kocka(boja,gustina,a,b,c);
  120.         }
  121.     }
  122.         cin>>boja>>gustina>>a>>b>>c;
  123.         Kocka petra(boja,gustina,a,b,c);
  124.         proverka(petra.getMasa(),kupche,n);
  125.         cout<<"Razlikata e: "<<abs(petra.getVolumen()-maxVolume(petra.getVolumen(),kupche,n))<<endl;
  126.         cout<<"Razlikata e: "<<abs(petra.getPlostina()-minPlostina(petra.getPlostina(),kupche,n))<<endl;
  127.         for(int i=0;i<n;i++)
  128.         {
  129.             delete kupche[i];
  130.         }
  131.         delete [] kupche;
  132.  
  133.  
  134.     return 0;
  135. }
Add Comment
Please, Sign In to add comment