Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/35: Рейтинг темы: голосов - 35, средняя оценка - 4.69
1 / 1 / 2
Регистрация: 16.10.2014
Сообщений: 38

Создать базовый класс «Музыкальный инструмент» и производные классы «Ударный», «Струнный», «Духовой»

07.06.2015, 15:03. Показов 7469. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать базовый класс «Музыкальный инструмент» и производные классы «Ударный», «Струнный», «Духовой». Создать массив объектов «Оркестр». Выдать состав оркестра, переопределив метод.

Программа работает. Хотелось бы спросить, выполнено ли условие задачи?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include <iostream>
using namespace std;
 
const int LEN = 80;
class instrument{
private:
 
    char name[LEN];       
    char prois[LEN];
    char type[LEN];
 
public:
    void getdata() {
        cout << "\n  Введите фамилию владельца инструмента: "; cin >> name;
        cout << "\n  Производитель инструмента: "; cin >> prois;
 
    }
    void putdata() const  {
        cout << "\n  Фамилия: " << name;
        cout << "\n  Производитель инструмента: " << prois;
    
    }
};
 
 
class Kick : public instrument{
};
 
class String : public instrument{
private:
    int kolvo; // кол-во струн
 
public:
    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 getdata(){
        instrument::getdata();
        cout << "\n  Длина канала духового инструмента: "; cin >> lenghtcanal;
 
    }
    void putdata() const {
        instrument::putdata();
        cout << "\n  Длина канала духового инструмента: " << lenghtcanal;
    }
};
 
 
 
class orchestra{
private:
    Horn mass1[2];
    int n1;
    Kick mass2[2];
    int n2;
    String mass3[2];
    int n3;
public:
    orchestra(){
        n1 = 0;
        n2 = 0;
        n3 = 0;
    }
    void get_Horn(char *n){
    
        cout << "Духовой " << endl;
        mass1[n1].getdata();
        n1++;
    }
    void get_Kick(char *n){
    
        cout << "Ударный " << endl;
        mass2[n2].getdata();
        n2++;
    }
    void get_String(char *n){
    
        cout << "Струнный " << endl;
        mass3[n3].getdata();
        n3++;
    }
    void print(){
        for (int i = 0; i < n1; i++){
            cout << endl;
            mass1[i].putdata();
            cout << endl;
        }
        for (int i = 0; i < n2; i++){
            cout << endl;
            mass2[i].putdata();
            cout << endl;
        }
        for (int i = 0; i < n3; i++){
            cout << endl;
            mass3[i].putdata();
            cout << endl;
        }
    }
 
}; 
int main(){
    system("chcp 1251");
    system("cls");
    orchestra mass;
    mass.get_Kick("1");
    mass.get_Horn("1");
    mass.get_Horn("2");
    mass.get_String("1");
    mass.get_Kick("2");
    mass.print();
    system("pause");
    return (0);
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.06.2015, 15:03
Ответы с готовыми решениями:

Создать базовый класс «Музыкальный инструмент» и производные классы «Ударный», «Струнный», «Духовой»
Срочно. Помогите пожалуйста! Создать базовый класс «Музыкальный инструмент» и производные классы «Ударный», «Струнный», «Духовой»....

Создать класс - данные - абстрактный базовый класс. Создать производные классы
Всем привет! У меня вот такая проблема.... Создать класс - данные - абстрактный базовый класс. Создать производные классы - данные типа...

Класс: Создать базовый класс «работник фирмы» и производные классы «стажер», «руководящий сотрудник», «директор»...
Всем привет, помогите пожалуйста, я уже всю голову сломал, не знаю как решить ее... Создать базовый класс «работник фирмы» и...

7
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
07.06.2015, 15:37
Класс orchestra не нужен. Вместо него лучше создать метод в базовом и других классах:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//class instrument
void get_name() const  {
  cout << "Инструмент\n";
}
 
//class Kick
void get_name() const  {
  cout << "Ударный\n";
}
 
//class String
void get_name() const  {
  cout << "Струнный\n";
}
 
//class Horn
void get_name() const  {
  cout << "Духовой\n";
}
 
//Создать массив объектов «Оркестр»
instrument o[2];
o[0] = new Horn();
o[1] = new String();
 
//Выдать состав оркестра
o[0].get_name();
o[1].get_name();
1
1 / 1 / 2
Регистрация: 16.10.2014
Сообщений: 38
07.06.2015, 16:53  [ТС]
Ругается на знак =.

C++
1
o[0] = new Horn();
бинарный "=": не найден оператор, принимающий правый операнд типа "Kick *" (или приемлемое преобразование отсутствует)
может быть "instrument &instrument::operator =(const instrument &)"
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
07.06.2015, 17:37
Извиняюсь, звёздочку потерял.
C++
1
2
3
instrument* o[2];//массив указателей
o[0] = new Horn();//создаём объект
o[1] = new String();
1
1 / 1 / 2
Регистрация: 16.10.2014
Сообщений: 38
07.06.2015, 18:12  [ТС]
Исправил, спасибо. Но теперь другая проблема.
C++
1
o[0].get_name();
выражение слева от ".get_name" должно представлять класс, структуру или объединение

Я поменял "." на "->". Только он выводит функцию get_name базового класса.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
07.06.2015, 18:19
А в других классах метод get_name() есть?
1
1 / 1 / 2
Регистрация: 16.10.2014
Сообщений: 38
07.06.2015, 18:37  [ТС]
Все работает. Спасибо большое.

C++
1
void get_name() const
заменил на:

C++
1
virtual void get_name()
0
 Аватар для YRELIS
0 / 0 / 1
Регистрация: 16.06.2015
Сообщений: 47
11.01.2017, 22:58
нет полного исходника?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.01.2017, 22:58
Помогаю со студенческими работами здесь

Создать базовый абстрактный класс Фигура и производные классы
Создать базовый абстрактный класс - фигура, и производные класс - круг, прямоугольник, трапеция. Определить абстрактные функции площадь,...

Создать базовый класс «Учащийся» и производные классы «Школьник» и «Студент»
Создать базовый класс «Учащийся» и производные классы «Школьник» и «Студент». Создать массив объектов базового класса и заполнить этот...

Создать базовый класс «Учащийся» и производные классы «Школьник» и «Студент»
При выполнении данной работы необходимо определить базовый класс и производные от него классы. Предусмотреть передачу аргументов...

Создать базовый класс «Учащийся» и производные классы «Школьник» и «Студент»
Создать базовый класс «Учащийся» и производные классы «Школьник» и «Студент». Создать массив объектов базового класса и заполнить этот...

Создать абстрактный базовый класс с виртуальной функцией - сумма прогрессии. Создать производные классы: ариф
Здравствуйте, помогите разобраться с задачей Создать абстрактный базовый класс с виртуальной функцией - сумма прогрессии. Создать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru