Advertisement
deko96

Жичани Инструменти

Apr 26th, 2015
345
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.67 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. class ZicanInstrument {
  7. protected:
  8.     char ime[20];
  9.     int zici;
  10.     int price;
  11. public:
  12.     ZicanInstrument(char *ime = "", int zici = 0, int price = 0) {
  13.         strcpy(this->ime, ime);
  14.         this->zici = zici;
  15.         this->price = price;
  16.     }
  17.     virtual float cena() = 0;
  18.     bool operator ==(ZicanInstrument &x) {
  19.         return zici == x.zici;
  20.     }
  21.     friend ostream& operator <<(ostream& out, ZicanInstrument &x) {
  22.         out << x.ime << " " << x.zici << " " << x.price << endl;
  23.     }
  24. };
  25. class Mandolina : public ZicanInstrument {
  26. private:
  27.     char forma[20];
  28. public:
  29.     Mandolina(char *ime = "", int zici = 0, int cena = 0, char *forma = "") : ZicanInstrument(ime, zici, cena) {
  30.         strcpy(this->forma, forma);
  31.     }
  32.     float cena() {
  33.         if(strcmp(forma, "Neapolitan") == 0)
  34.             return price + price * 0.15;
  35.         else
  36.             return price;
  37.     }
  38.     bool operator ==(Mandolina &m) {
  39.         return zici == m.zici;
  40.     }
  41.     friend ostream& operator <<(ostream& out, Mandolina &m) {
  42.         out << m.ime << " " << m.zici << " " << m.price << "" << m.forma << endl;
  43.     }
  44. };
  45. class Violina : public ZicanInstrument {
  46. private:
  47.     float golemina;
  48. public:
  49.     Violina(char *ime = "", int zici = 0, int cena = 0, float golemina = 0) : ZicanInstrument(ime, zici, cena) {
  50.         this->golemina = golemina;
  51.     }
  52.     float cena() {
  53.         if(golemina == 0.25)
  54.             return price + price * 0.1;
  55.         else if(golemina == 1)
  56.             return price + price * 0.2;
  57.         else
  58.             return price;
  59.     }
  60.     bool operator ==(Violina &v) {
  61.         return zici == v.zici;
  62.     }
  63.     friend ostream& operator <<(ostream& out, Violina &v) {
  64.         out << v.ime << " " << v.zici << " " << v.price << "" << v.golemina << endl;
  65.     }
  66. };
  67. void pecatiInstrumenti(ZicanInstrument &zi, ZicanInstrument **i, int n) {
  68.     for(int j = 0; j < n; ++j) {
  69.         if(zi == *i[j])
  70.             cout << i[j]->cena() << endl;
  71.     }
  72. }
  73. int main() {
  74.     char ime[20];
  75.     int brojZici;
  76.     float cena;
  77.     char forma[20];
  78.     cin >> ime >> brojZici >> cena >> forma;
  79.     Mandolina m(ime, brojZici, cena, forma);
  80.     int n;
  81.     cin >> n;
  82.     ZicanInstrument **zi = new ZicanInstrument*[2 * n];
  83.     for(int i = 0; i < n; ++i) {
  84.         cin >> ime >> brojZici >> cena >> forma;
  85.         zi[i] = new Mandolina(ime, brojZici, cena, forma);
  86.     }
  87.     for(int i = 0; i < n; ++i) {
  88.         float golemina;
  89.         cin >> ime >> brojZici >> cena >> golemina;
  90.         zi[n + i] = new Violina(ime, brojZici, cena, golemina);
  91.     }
  92.     pecatiInstrumenti(m, zi, 2 * n);
  93.     for(int i = 0; i < 2 * n; ++i) {
  94.         delete zi[i];
  95.     }
  96.     delete [] zi;
  97.     return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement