HeatPulse

Zicani Instrumenti

May 2nd, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. class ZicanInstrument {
  8. protected:
  9. char ime[20];
  10. int brojZici;
  11. int osnovnaCena;
  12. public:
  13. ZicanInstrument (const char *ime="",int brojZici=0,int osnovnaCena=0)
  14. {
  15. strcpy(this->ime,ime);
  16. this->brojZici = brojZici;
  17. this->osnovnaCena = osnovnaCena;
  18. }
  19.  
  20. ~ZicanInstrument () {}
  21.  
  22. bool operator== (ZicanInstrument &z1)
  23. {
  24. if (z1.brojZici == brojZici)
  25. return true;
  26. else
  27. return false;
  28. }
  29.  
  30. virtual int cena ()=0;
  31.  
  32. };
  33.  
  34. class Mandolina : public ZicanInstrument {
  35. protected:
  36. char forma[20];
  37. public:
  38.  
  39. Mandolina (const char *ime="",int brojZici=0,int osnovnaCena=0,const char *forma="") : ZicanInstrument (ime,brojZici,osnovnaCena)
  40. {
  41. strcpy(this->forma,forma);
  42. }
  43.  
  44. ~Mandolina () {}
  45.  
  46. int cena ()
  47. {
  48. if (!strcmp(forma,"Neapolitan"))
  49. {
  50. return osnovnaCena + osnovnaCena * 0.15;
  51. }
  52. else
  53. return osnovnaCena;
  54. }
  55.  
  56. friend ostream &operator<< (ostream &o,const Mandolina &m)
  57. {
  58. o<<m.ime<<" "<<m.brojZici<<" "<<m.osnovnaCena<<" "<<m.forma<<endl;
  59. return o;
  60. }
  61.  
  62. };
  63.  
  64.  
  65. class Violina: public ZicanInstrument {
  66. protected:
  67. float golemina;
  68. public:
  69.  
  70. Violina (const char *ime="",int brojZici=0,int osnovnaCena=0,float golemina=0) : ZicanInstrument (ime,brojZici,osnovnaCena)
  71. {
  72. this->golemina = golemina;
  73. }
  74.  
  75. ~Violina () {}
  76.  
  77. int cena ()
  78. {
  79. if (golemina == 0.25)
  80. return osnovnaCena + osnovnaCena * 0.1;
  81. else if (golemina == 1.00)
  82. return osnovnaCena + osnovnaCena * 0.2;
  83. else
  84. return osnovnaCena;
  85. }
  86.  
  87. friend ostream &operator<< (ostream &o,const Violina &v)
  88. {
  89. o<<v.ime<<" "<<v.brojZici<<" "<<v.osnovnaCena<<" "<<v.golemina<<endl;
  90. }
  91. };
  92.  
  93.  
  94. void pecatiInstrumenti (ZicanInstrument &zi,ZicanInstrument **i,int n)
  95. {
  96. for (int k=0;k<n;k++)
  97. {
  98. if (zi == *(i[k]))
  99. {
  100. cout<< i[k] -> cena() << endl;
  101. }
  102.  
  103. }
  104.  
  105. }
  106.  
  107.  
  108. int main() {
  109. char ime[20];
  110. int brojZici;
  111. float cena;
  112. char forma[20];
  113. cin >> ime >> brojZici >> cena >> forma;
  114. Mandolina m(ime, brojZici, cena, forma);
  115. int n;
  116. cin >> n;
  117. ZicanInstrument **zi = new ZicanInstrument*[2 * n];
  118. for(int i = 0; i < n; ++i) {
  119. cin >> ime >> brojZici >> cena >> forma;
  120. zi[i] = new Mandolina(ime, brojZici, cena, forma);
  121. }
  122. for(int i = 0; i < n; ++i) {
  123. float golemina;
  124. cin >> ime >> brojZici >> cena >> golemina;
  125. zi[n + i] = new Violina(ime, brojZici, cena, golemina);
  126. }
  127. pecatiInstrumenti(m, zi, 2 * n);
  128. for(int i = 0; i < 2 * n; ++i) {
  129. delete zi[i];
  130. }
  131. delete [] zi;
  132. return 0;
  133. }
Add Comment
Please, Sign In to add comment