Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- class Musician
- {
- protected:
- char name[100];
- float earnings;
- int performances;
- char gender;
- public:
- virtual float performancePrice() = 0;
- virtual float danok() = 0;
- Musician(){}
- Musician(char *n, float e, int p, char g)
- {
- strcpy(name,n);
- earnings=e;
- performances=p;
- gender=g;
- }
- friend ostream &operator<<(ostream &output, const Musician &rhs)
- {
- output<<rhs.name<<endl<<rhs.earnings<<endl<<rhs.gender<<endl;
- return output;
- }
- bool operator> (Musician &rhs)
- {
- return this->performancePrice()>rhs.performancePrice();
- }
- };
- class Guitarist:public Musician
- {
- float guitarPrice;
- public:
- Guitarist(){}
- Guitarist(char *n, float e, int p, char g, float gp):Musician(n,e,p,g)
- {
- guitarPrice=gp;
- }
- float performancePrice()
- {
- return guitarPrice/10;
- }
- float danok()
- {
- return (performances>30)?earnings*0.08:earnings*0.1;
- }
- };
- class Drummer:public Musician
- {
- int age;
- public:
- Drummer(){}
- Drummer(char *n, float e, int p, char g, int a):Musician(n,e,p,g)
- {
- age=a;
- }
- float performancePrice()
- {
- return age*50;
- }
- float danok()
- {
- return (gender=='M')?0.12*earnings:0.1*earnings;
- }
- };
- void mostExpensiveMusician(Musician **arr, int n)
- {
- float highestPrice=arr[0]->performancePrice();
- int id=0;
- for(int i=1;i<n;i++)
- if(highestPrice<arr[i]->performancePrice())
- {
- highestPrice=arr[i]->performancePrice();
- id=i;
- }
- cout<<*arr[id];
- }
- int main() {
- int n, x;
- cin >> n >> x;
- Musician **m = new Musician*[n];
- for(int i = 0; i < n; ++i) {
- char ime[100];
- float zarabotka;
- int nastapi;
- char pol;
- cin >> ime >> zarabotka >> nastapi >> pol;
- if(i < x) {
- float cena_gitara;
- cin >> cena_gitara;
- m[i] = new Guitarist(ime, zarabotka, nastapi, pol, cena_gitara);
- } else {
- int vozrast;
- cin >> vozrast;
- m[i] = new Drummer(ime, zarabotka, nastapi, pol, vozrast);
- }
- }
- cout << "=== TAX ===" << endl;
- for(int i = 0; i < n; ++i) {
- cout << *m[i];
- cout << m[i]->danok() << endl;
- }
- cout << "=== MOST EXPENSIVE ===" << endl;
- mostExpensiveMusician(m, n);
- for(int i = 0; i < n; ++i) {
- delete m[i];
- }
- delete [] m;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement