Advertisement
harissel22

Untitled

Aug 31st, 2019
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  1. class Lik {
  2.  
  3. protected:
  4. double specificna_tezina;
  5.  
  6. public:
  7. Lik(double specificna_tezina) : specificna_tezina(specificna_tezina){}
  8. virtual void Ispisi() const = 0;
  9. virtual Lik *DajKopiju() const =0;
  10. double DajSpecificnuTezinu() const {return specificna_tezina; }
  11. virtual double DajZapreminu() const { return 0;}
  12. };
  13.  
  14. class Kvadar : public Lik
  15. {
  16. double a, b, c;
  17.  
  18. public:
  19. Kvadar(double a, double b, double c, double spec_tez) : a(a), b(b), c(c), Lik(spec_tez){}
  20. Lik *DajKopiju() const override { return new Kvadar(*this); }
  21. double DajZapreminu() const override { return a*b*c; }
  22. double DajTezinu() const { return this->DajZapreminu()*specificna_tezina; }
  23. void Ispisi() const override {
  24. std::cout<<"Kvadar strnaica: "<<a<<" "<<b<<" "<<c<<" i zapremine: "<<this->DajZapreminu();
  25. }
  26.  
  27. };
  28. class Lopta : public Lik
  29. {
  30. double poluprecnik;
  31.  
  32. public:
  33. Lopta(double poluprecnik, double spec_tez) : poluprecnik(poluprecnik), Lik(spec_tez){}
  34. Lik *DajKopiju() const override { return new Lopta(*this); }
  35. double DajZapreminu() const override { return (4*poluprecnik*poluprecnik*poluprecnik*4*std::atan(1.))/3; }
  36. double DjaTezinu() const { return this->DajZapreminu()*specificna_tezina; }
  37. void Ispisi() const override
  38. {
  39. std::cout<<"Lopta poluprecnika: "<<poluprecnik<<" i zapremine: "<<this->DajZapreminu();
  40. }
  41.  
  42.  
  43. };
  44. class Valjak : public Lik
  45. {
  46. double poluprecnik_baze;
  47. double visina;
  48.  
  49. public:
  50. Valjak(double poluprecnik_baze, double visina, double spec_tez) : poluprecnik_baze(poluprecnik_baze), visina(visina), Lik(spec_tez) {}
  51. Lik *DajKopiju() const override { return new Valjak(*this); }
  52. double DajZapreminu() const override { return visina*poluprecnik_baze*poluprecnik_baze*4*std::atan(1.); }
  53. double DajTezinu() const { return this->DajZapreminu()*specificna_tezina; }
  54. void Ispisi() const
  55. {
  56. std::cout<<"Valjak poluprecnika "<<poluprecnik_baze<<" i visine: "<<visina<<" i zapremine: "<<this->DajZapreminu();
  57. }
  58.  
  59. };
  60. class KolekcijaLikova {
  61.  
  62. std::vector<std::shared_ptr<Lik>> likovi;
  63.  
  64. public:
  65. explicit KolekcijaLikova() {}
  66. ~KolekcijaLikova() { likovi.clear(); }
  67. void DodajKvadar(double s1, double s2, double s3, double spec_tez)
  68. {
  69.  
  70. likovi.push_back(std::make_shared<Kvadar>(s1,s2,s3,spec_tez));
  71. }
  72. void DodajLoptu(double r, double spec_tez)
  73. {
  74. likovi.push_back(std::make_shared<Lopta>(r, spec_tez));
  75. }
  76. void DodajValjak(double pol_baze, double h, double spec_tez)
  77. {
  78. likovi.push_back(std::make_shared<Valjak>(pol_baze, h,spec_tez));
  79. }
  80.  
  81. int DajBrojObjekata() const
  82. {
  83. return likovi.size();
  84. }
  85.  
  86. KolekcijaLikova(const KolekcijaLikova &k)
  87. {
  88. for(int i=0; i<k.DajBrojObjekata(); i++)
  89. likovi.push_back(std::make_shared<Lik>(*k.likovi[i]));
  90. }
  91.  
  92. };
  93.  
  94.  
  95.  
  96.  
  97. int main()
  98. {
  99. return 0;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement