#include <iostream>
using namespace std;
 
const int LEN = 80;
class instrument{
private:
    char name[LEN];
    char prois[LEN];
    char type[LEN];
     
public:
    virtual void get_name()   {
        cout << "Инструмент\n";
    }
    void getdata() {
        cout << "\n  Введите фамилию владельца инструмента: "; cin >> name;
        cout << "\n  Производитель инструмента: "; cin >> prois;
 
    }
    void putdata() const  {
        cout << "\n  Фамилия: " << name;
        cout << "\n  Производитель инструмента: " << prois;
 
    }
};
 
 
class Kick : public instrument{
    void get_name()    {
        cout << "Ударный\n";
    }
};
 
class String : public instrument{
private:
    int kolvo; // кол-во струн
 
public:
    void get_name()  {
        cout << "Струнный\n";
    }
    void getdata(){
        instrument::getdata();
 
        cout << "\n  Количество струн: "; cin >> kolvo;
    }
    void putdata() const {
        instrument::putdata();
 
        cout << "\n  Количество струн: " << kolvo;
    }
};
 
 
class Horn : public instrument{
private:
    char lenghtcanal[LEN]; // длина канала
 
public:
    void get_name()   {
        cout << "Духовой\n";
    }
    void getdata(){
        instrument::getdata();
        cout << "\n  Длина канала духового инструмента: "; cin >> lenghtcanal;
 
    }
    void putdata() const {
        instrument::putdata();
        cout << "\n  Длина канала духового инструмента: " << lenghtcanal;
    }
};
 
 
 
 
int main(){
       
    instrument* o[2];//массив указателей
    o[0] = new Horn();//создаём объект
    o[1] = new String();
    o[0]->get_name();
    o[1]->get_name();
    
    
    
    
    int n,choice;
    cout << "Введите размер оркестра";
    cin >> n;
    
    instrument** orc = new instrument*[n];
 
    for (int i = 0; i < n; i++)
     {
        cout << "Выберите тип инструмента:\n1-Ударный\n2-струнный\n3-духовой"<<endl;
        cin >> choice;
        switch (choice){
 
        case 1:orc[i] = new Kick();
            orc[i]->get_name();
              break;
        case 2:orc[i] = new String();
            orc[i]->get_name();
              break;
        case 3:orc[i] = new Horn();
            orc[i]->get_name();
              break;
        }
    }
    
    
    
    return 0;
}