Advertisement
simov

OOP Lab.8 - Повеќекратно наследување

Apr 25th, 2014
1,815
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.33 KB | None | 0 0
  1. /*
  2. Во една игротека има 2 типа играчки: топки и коцки. Коцките и топките се опишани со параметри како што се боја (char *) и густина (int). Дополнително за топките се знае и радиусот (int), додека за коцките целосните димензии (висина, ширина и длабочина – int).
  3.  
  4. За секоја од класите треба да се дефинираат методи getMasa() и getVolumen(). Масата на играчката се пресметува како производ од волуменот и густината на играчката.
  5.  
  6. Во функцијата main да се декларира променлива kupche што претставува динамички алоцирана низа кон Igrachka. Во зависност од првиот влезен параметар се внесуваат објекти од класите Topka или Kocka (1 - се внесува топка, 2 - се внесува коцка).
  7.  
  8. Од тастатура да се внесат податоци за коцката на Петра Kocka petra. Во главната функција во да се отпечатат:
  9.  
  10. Да се отпечати DA ако вкупната маса на сите играчки е поголема од масата на играчката на Петра, а NE во спротивно.
  11. Разликата по апсолутна вредност на волуменот на играчката со максимален волумен во купчето и волуменот на коцката на Петра. Форматот е:
  12.  
  13. Razlikata e: {razlika}
  14.  
  15. Задачата да се реши со тоа што класите Kocka и Topka ќе наследуваат од класите Forma и Igrachka.
  16.  
  17. Sample input:
  18. 3
  19. 1
  20. zelena
  21. 50
  22. 7
  23. 2
  24. crvena
  25. 10
  26. 2
  27. 3
  28. 1
  29. 2
  30. zolta
  31. 10
  32. 1
  33. 2
  34. 3
  35. zelena
  36. 15
  37. 2
  38. 2
  39. 3
  40.  
  41. Sample output:
  42. DA
  43. Razlikata e: 1424.03
  44. */
  45.  
  46. #include <iostream>
  47. #include <cstring>
  48. #include <cmath>
  49. using namespace std;
  50.  
  51. class Igrachka
  52. {
  53. public:
  54.     virtual double getVolumen()=0;
  55.     virtual double getMasa()=0;
  56. };
  57.  
  58. class Forma
  59. {
  60. protected:
  61.     char *boja;
  62.     int gustina;
  63. public:
  64.     Forma(char *b="",int g=0)
  65.     {
  66.         boja=new char[strlen(b)+1];
  67.         strcpy(boja,b);
  68.         gustina=g;
  69.     }
  70.     ~Forma()
  71.     {
  72.         delete [] boja;
  73.     }
  74. };
  75.  
  76. class Kocka:public Forma,public Igrachka
  77. {
  78. private:
  79.     int visina;
  80.     int sirina;
  81.     int dlabocina;
  82. public:
  83.     Kocka(char *b="",int g=0,int v=0,int s=0,int d=0):Forma(b,g)
  84.     {
  85.         visina=v;
  86.         sirina=s;
  87.         dlabocina=d;
  88.     }
  89.     double getVolumen()
  90.     {
  91.         return visina*sirina*dlabocina;
  92.     }
  93.     double getMasa()
  94.     {
  95.         return getVolumen()*gustina;
  96.     }
  97. };
  98.  
  99. class Topka:public Forma,public Igrachka
  100. {
  101. private:
  102.     int radius;
  103. public:
  104.     Topka(char *b="",int g=0,int r=0):Forma(b,g)
  105.     {
  106.         radius=r;
  107.     }
  108.     double getVolumen()
  109.     {
  110.         return 3.14*4/3*radius*radius*radius;
  111.     }
  112.     double getMasa()
  113.     {
  114.         return getVolumen()*gustina;
  115.     }
  116. };
  117.  
  118. int main()
  119. {
  120.     int n,p;
  121.     cin>>n;
  122.     char boja[50];
  123.     int gustina,radius,visina,sirina,dlabocina;
  124.     Igrachka **kupche=new Igrachka*[n];
  125.     for(int i=0;i<n;i++)
  126.     {
  127.         cin>>p;
  128.         if(p==1)
  129.         {
  130.             cin>>boja>>gustina>>radius;
  131.             kupche[i]=new Topka(boja,gustina,radius);
  132.         }
  133.         if(p==2)
  134.         {
  135.             cin>>boja>>gustina>>visina>>sirina>>dlabocina;
  136.             kupche[i]=new Kocka(boja,gustina,visina,sirina,dlabocina);
  137.         }
  138.     }
  139.     cin>>boja>>gustina>>visina>>sirina>>dlabocina;
  140.     Kocka petra(boja,gustina,visina,sirina,dlabocina);
  141.  
  142.     double vkp=0;
  143.     for(int i=0;i<n;i++)
  144.     {
  145.         vkp=vkp+kupche[i]->getMasa();
  146.     }
  147.     if(vkp>petra.getMasa())
  148.         cout<<"DA"<<endl;
  149.     else
  150.         cout<<"NE"<<endl;
  151.     double maxvolumen=kupche[0]->getVolumen();
  152.     for(int i=1;i<n;i++)
  153.     {
  154.         if(maxvolumen<kupche[i]->getVolumen())
  155.         {
  156.             maxvolumen=kupche[i]->getVolumen();
  157.         }
  158.     }
  159.     cout<<"Razlikata e: "<<abs(maxvolumen-petra.getVolumen());
  160.     return 0;
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement