Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- Жичани инструменти Задача 1 (1 / 2)
- Да се креира хиерархиjа на класи за репрезентациjа на жичани инструменти. За потребите на оваа хиерархиjа да се дефинира класа ZicanInstrument од коjа ќе бидат изведени двете класи Mandolina и Violina.
- Во класата ZicanInstrument се чуваат податоци за:
- името на инструментот (низа од 20 знаци)
- броjот на жици
- основната цена на инструментот.
- За класата Mandolina дополнително се чува неjзината форма (низа од 20 знаци).
- За класата Violina дополнително се чува неjзината големина (децимален броj).
- За секоjа изведените класи треба да се дефинираат соодветните конструктори и следните методи:
- cena() за пресметување на цената на инструментот
- основната цена на мандолината се зголемува за 15% доколку таа има форма во Неаполитански стил (вредноста на променливата форма е “Neapolitan”)
- основната цена на виолината се зголемува за 10% ако неjзината големина има вредност 1/4 (0.25), односно за 20% ако неjзината големина има вредност 1 (1.00)
- проптоварување на операторот ==, коj ги споредува жичаните инструменти според броjот на жици што го имаат
- преоптоварување на операторот << за печатење на сите податоци за жичаните инструменти.
- Да се напише функциjа pecatiInstrumenti(ZicanInstrument &zi, ZicanInstrument **i, int n) коjа на влез прима жичан инструмент, низа од покажувачи кон жичани инструменти и броj на елементи во низата. Функциjата jа печати цената на сите жичани инструменти од низата кои имаат ист броj на жици како и инструментот проследен како прв аргумент на функциjата.
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- #include <iostream>
- #include <cstring>
- using namespace std;
- class ZicanInstrument {
- protected:
- char ime[20];
- int brZhici;
- int osnovnaCena;
- public:
- ZicanInstrument() {}; // default
- ZicanInstrument(char *ime, int zhici, int osnovnaCena) { // arguments
- strcpy(this->ime,ime);
- brZhici=zhici;
- this->osnovnaCena=osnovnaCena;
- }
- friend bool operator== (const ZicanInstrument &zi, const ZicanInstrument &z) {
- if(zi.brZhici==z.brZhici) return true;
- else return false;
- }
- virtual int cena()=0;
- };
- class Mandolina: public ZicanInstrument {
- private:
- char forma[20];
- public:
- Mandolina() {} // default
- Mandolina(char *ime, int zhici, int osnovnaCena, char *forma):ZicanInstrument(ime, zhici, osnovnaCena) {
- strcpy(this->forma,forma);
- }
- int cena() {
- if(strcmp(forma,"Neapolitan")==0)
- osnovnaCena += osnovnaCena*15/100;
- return osnovnaCena;
- }
- friend bool operator== (const Mandolina &m1, const Mandolina &m2) {
- if(m1.brZhici==m2.brZhici) return true;
- else return false;
- }
- friend ostream &operator<< (ostream &out, const Mandolina &m) {
- return out<<m.ime<<endl<<m.brZhici<<endl<<m.osnovnaCena<<endl<<m.forma<<endl;
- }
- };
- class Violina: public ZicanInstrument {
- private:
- float golemina;
- public:
- Violina() {} // default
- Violina(char *ime, int zhici, int osnovnaCena, float g):ZicanInstrument(ime, zhici, osnovnaCena) {
- golemina=g;
- }
- int cena() {
- if(golemina==0.25)
- osnovnaCena += osnovnaCena*10/100;
- else if (golemina==1.00)
- osnovnaCena += osnovnaCena*20/100;
- return osnovnaCena;
- }
- friend bool operator== (const Violina &v1, const Violina &v2) {
- if(v1.brZhici==v2.brZhici) return true;
- else return false;
- }
- friend ostream &operator<< (ostream &out, const Violina &v) {
- return out<<v.ime<<endl<<v.brZhici<<endl<<v.osnovnaCena<<endl<<v.golemina<<endl;
- }
- };
- void pecatiInstrumenti(ZicanInstrument &zi, ZicanInstrument **i, int n) {
- for(int k=0; k<n; k++)
- if(zi==*i[k])
- cout<<i[k]->cena()<<endl;
- }
- int main() {
- char ime[20];
- int brojZici;
- float cena;
- char forma[20];
- cin >> ime >> brojZici >> cena >> forma;
- Mandolina m(ime, brojZici, cena, forma);
- int n;
- cin >> n;
- ZicanInstrument **zi = new ZicanInstrument*[2 * n];
- for(int i = 0; i < n; ++i) {
- cin >> ime >> brojZici >> cena >> forma;
- zi[i] = new Mandolina(ime, brojZici, cena, forma);
- }
- for(int i = 0; i < n; ++i) {
- float golemina;
- cin >> ime >> brojZici >> cena >> golemina;
- zi[n + i] = new Violina(ime, brojZici, cena, golemina);
- }
- pecatiInstrumenti(m, zi, 2 * n);
- for(int i = 0; i < 2 * n; ++i) {
- delete zi[i];
- }
- delete [] zi;
- return 0;
- }
Add Comment
Please, Sign In to add comment