Advertisement
Guest User

Untitled

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