С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/63: Рейтинг темы: голосов - 63, средняя оценка - 4.52
30 / 24 / 6
Регистрация: 24.11.2020
Сообщений: 214

Построить иерархию классов, используя абстрактный класс

31.03.2021, 15:13. Показов 12812. Ответов 59

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите разобраться с заданием, честно говоря, я вообще не понимаю, что и как делать...
Задание такое:
Постройте иерархию классов, используя абстрактный класс в
соответствии с вариантом задания. (Рабочий, кадры, инженер, администрация).
Должны быть заданы названия базовых и производных классов. Необходимо
разработать поля и методы, наследуемые из базового класса, и собственные
компоненты производных классов. При выполнении работы следует разработать
возможность выбирать соответствующий класс, просматривать его содержимое,
заносить, изменять и удалять данные этого класса.

Нашла вот такой код, пыталась хоть как-то вникнуть в тему классов... Пробовала сделать меню, для выбора хотя бы, но не знаю, как реализовать этот самый вывод:
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#include <iostream>
#include <conio.h>
#include <string>
#include <Windows.h>
 
using namespace std;
 
class Publication {
protected:
    string name;
 
public:
    static Publication* begin;
    Publication* next;
 
    static void add(Publication* cur) {
        cur->next = begin;
        begin = cur;
    }
 
    Publication() {
        add(this);
    }
 
    virtual void show() {
        cout << "Name: " << name << endl;
        cout << "----------------------------" << endl;
    }
 
    virtual void set_parameters() {
        string s;
 
        cout << "Name: ";
        cin >> s;
 
        name = s;
    }
 
    virtual void print() {
        Publication* l = begin;
 
        while (l) {
            l->show();
            l = l->next;
        }
    }
};
 
Publication* Publication::begin;
 
class Book : public Publication {
protected:
    int pages;
    string author;
 
public:
    Book() :Publication() {}
 
    void show() {
        cout << "Name: " << name << endl;
        cout << "Pages: " << pages << endl;
        cout << "Author: " << author << endl;
        cout << "----------------------------" << endl;
    }
 
    void set_parameters() {
        int k;
        string s, a;
 
        cout << "Name: ";
        cin >> s;
 
        cout << "Author: ";
        cin >> a;
 
        cout << "Pages: ";
        cin >> k;
 
        name = s;
        author = s;
        pages = k;
    }
 
};
 
class Magazine : public Publication {
protected:
    int pages;
    int mon;
    int year;
 
public:
    Magazine() :Publication() {}
 
    void show() {
        cout << "Name: " << name << endl;
        cout << "Pages: " << pages << endl;
        cout << "Data: " << mon << "." << year << endl;
        cout << "----------------------------" << endl;
    }
 
    void set_parameters() {
        int n, m, y;
        string s;
 
        cout << "Name: ";
        cin >> s;
 
        cout << "Pages: ";
        cin >> n;
 
        cout << "Month: ";
        cin >> m;
 
        cout << "Year: ";
        cin >> y;
 
        name = s;
        pages = n;
        year = y;
        mon = m;
    }
};
 
class Textbook : public Publication {
public:
    Textbook() :Publication() {}
};
 
int main() 
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    Publication::begin = 0;
    Publication publication;
    Book book;
    Magazine magazine;
    Textbook textbook;
 
    cout << "Publication" << endl;
    publication.set_parameters();
 
    cout << "Book" << endl;
    book.set_parameters();
 
    cout << "Magazine" << endl;
    magazine.set_parameters();
 
    cout << "Textbook" << endl;
    textbook.set_parameters();
 
    cout << "============================" << endl;
    cout << "All PUBLICATION" << endl;
    cout << "============================" << endl;
 
    publication.print();
 
    _getch();
    return 0;
}
Добавлено через 16 минут
Немного отредактировала, чтобы было удобнее
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#include <iostream>
#include <conio.h>
#include <string>
#include <Windows.h>
 
using namespace std;
 
class Kadry {
protected:
    string name;
 
public:
    static Kadry* begin;
    Kadry* next;
 
    static void add(Kadry* cur) {
        cur->next = begin;
        begin = cur;
    }
 
    Kadry() {
        add(this);
    }
 
    virtual void show() {
        cout << "Имя: " << name << endl;
        cout << "----------------------------" << endl;
    }
 
    virtual void set_parameters() {
        string s;
 
        cout << "Имя: ";
        cin >> s;
 
        name = s;
    }
 
    virtual void print() {
        Kadry* l = begin;
 
        while (l) {
            l->show();
            l = l->next;
        }
    }
};
 
Kadry* Kadry::begin;
 
class Admin : public Kadry {
protected:
    int age;
    string familiya;
 
public:
    Admin() :Kadry() {}
 
    void show() {
        cout << "Имя: " << name << endl;
        cout << "Возраст: " << age << endl;
        cout << "Фамилия: " << familiya << endl;
        cout << "----------------------------" << endl;
    }
 
    void set_parameters() {
        int k;
        string s, a;
 
        cout << "Имя: ";
        cin >> s;
 
        cout << "Фамилия: ";
        cin >> a;
 
        cout << "Возраст: ";
        cin >> k;
 
        name = s;
        familiya = a;
        age = k;
    }
 
};
 
class Rabochii : public Kadry {
protected:
    int age;
    int mon;
    int year;
 
public:
    Rabochii() :Kadry() {}
 
    void show() {
        cout << "Имя: " << name << endl;
        cout << "Возраст: " << age << endl;
        cout << "Месяц и год рождения: " << mon << "." << year << endl;
        cout << "----------------------------" << endl;
    }
 
    void set_parameters() {
        int n, m, y;
        string s;
 
        cout << "Имя: ";
        cin >> s;
 
        cout << "Возраст: ";
        cin >> n;
 
        cout << "Месяц: ";
        cin >> m;
 
        cout << "Год: ";
        cin >> y;
 
        name = s;
        age = n;
        year = y;
        mon = m;
    }
};
 
class Injener : public Kadry {
public:
    Injener() :Kadry() {}
};
 
int main() 
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    Kadry::begin = 0;
    Kadry Kadry;
    Admin Admin;
    Rabochii Rabochii;
    Injener Injener;
 
    cout << "Кадры: " << endl;
    Kadry.set_parameters();
 
    cout << "Администрация: " << endl;
    Admin.set_parameters();
 
    cout << "Рабочие: " << endl;
    Rabochii.set_parameters();
 
    cout << "Инженеры: " << endl;
    Injener.set_parameters();
 
    cout << "============================" << endl;
    cout << "Вывод Информации!" << endl;
    cout << "============================" << endl;
 
    Kadry.print();
 
    _getch();
    return 0;
}
Добавлено через 6 минут
Например, чтобы реализовать меню, я могу так сделать?
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
int menu();
 
while (1)
    {
        switch (menu())
        {
        case 1:
//////
            break;
        case 2:
//////
            break;
        case 3:
////////
            break;
        case 4:
      /////////
            break;
        case 5:
            exit(0);
            break;
        case 6:
            system("cls");
            break;
        default:
            cout << "Неверный выбор!\n";
        }
    }
 
int menu()
{
    int vvod;
    cout << "1 - ///;\n";
    cout << "2 - ///;\n";
    cout << "3 - ///;\n";
    cout << "4 - ///;\n";
    cout << "5 - выход;\n";
    cout << "6 - очистить экран;\n\n";
    cout << "Выберите действие: "; cin >> vvod;
    cout << "\n";
    return vvod;
}
Если да, то как?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.03.2021, 15:13
Ответы с готовыми решениями:

Создать иерархию классов: абстрактный базовый класс Array и производные классы AndArray и OnArray
Помогите написать программу, спасибо!!! Создать абстрактный базовый класс Array с виртуальными методами сложения и поэлементной...

Создать абстрактный базовый класс объектов на декартовой плоскости CShape и разработать иерархию классов конкретных фигур
Создать абстрактный базовый класс объектов на декартовой плоскости CShape (фигура). Спроектировать и реализовать иерархию классов...

Создать иерархию классов Шахматная фигура – абстрактный класс, содержащий поле – цвет. Создать производные классы
Создать иерархию классов Шахматная фигура – абстрактный класс, содержащий поле – цвет. Создать производные классы все фигуры, содержащие...

59
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
31.03.2021, 20:38
Цитата Сообщение от ANGELin04ka Посмотреть сообщение
Немного отредактировала, чтобы было удобнее
Здесь есть базовый класс - кадры (Employee), и наследники - Рабочий (Worker), инженер (Engineer), администрация (?????)
Для начала надо понять, что у этих наследников есть общее и какие есть различия.
Например, общее здесь вижу, это вывод на экран. Т.е. у базового класса должен быть абстрактный виртуальный метод Print.
1
30 / 24 / 6
Регистрация: 24.11.2020
Сообщений: 214
31.03.2021, 20:41  [ТС]
oleg-m1973, Ну, как я понимаю, общее это поля, которые они будут наследовать и использовать? Вроде имён и характеристик человека?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
31.03.2021, 20:43
Цитата Сообщение от ANGELin04ka Посмотреть сообщение
oleg-m1973, Ну, как я понимаю, общее это поля, которые они будут наследовать и использовать?
В основном виртуальные методы. Поля тоже, но не увлекайся.
1
30 / 24 / 6
Регистрация: 24.11.2020
Сообщений: 214
31.03.2021, 20:50  [ТС]
oleg-m1973, Ну, получается, что тут у нас есть 3 виртуальных метода, они наследуются, как я понимаю и поля, которые прописаны тоже
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
virtual void show() {
        cout << "Имя: " << name << endl;
        cout << "----------------------------" << endl;
    }
 
    virtual void set_parameters() {
        string s;
 
        cout << "Имя: ";
        cin >> s;
 
        name = s;
    }
 
    virtual void print() {
        Employee* l = begin;
 
        while (l) {
            l->show();
            l = l->next;
        }
    }
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#include <iostream>
#include <conio.h>
#include <string>
#include <Windows.h>
 
using namespace std;
 
class Employee {
protected:
    string name;
 
public:
    static Employee* begin;
    Employee* next;
 
    static void add(Employee* cur) {
        cur->next = begin;
        begin = cur;
    }
 
    Employee() {
        add(this);
    }
 
    virtual void show() {
        cout << "Имя: " << name << endl;
        cout << "----------------------------" << endl;
    }
 
    virtual void set_parameters() {
        string s;
 
        cout << "Имя: ";
        cin >> s;
 
        name = s;
    }
 
    virtual void print() {
        Employee* l = begin;
 
        while (l) {
            l->show();
            l = l->next;
        }
    }
};
 
Employee* Employee::begin;
 
class Admin : public Employee {
protected:
    int age;
    string familiya;
 
public:
    Admin() :Employee() {}
 
    void show() {
        cout << "Имя: " << name << endl;
        cout << "Возраст: " << age << endl;
        cout << "Фамилия: " << familiya << endl;
        cout << "----------------------------" << endl;
    }
 
    void set_parameters() {
        int k;
        string s, a;
 
        cout << "Имя: ";
        cin >> s;
 
        cout << "Фамилия: ";
        cin >> a;
 
        cout << "Возраст: ";
        cin >> k;
 
        name = s;
        familiya = a;
        age = k;
    }
 
};
 
class Worker : public Employee {
protected:
    int age;
    int mon;
    int year;
 
public:
    Worker() :Employee() {}
 
    void show() {
        cout << "Имя: " << name << endl;
        cout << "Возраст: " << age << endl;
        cout << "Месяц и год рождения: " << mon << "." << year << endl;
        cout << "----------------------------" << endl;
    }
 
    void set_parameters() {
        int n, m, y;
        string s;
 
        cout << "Имя: ";
        cin >> s;
 
        cout << "Возраст: ";
        cin >> n;
 
        cout << "Месяц рождения: ";
        cin >> m;
 
        cout << "Год рождения: ";
        cin >> y;
 
        name = s;
        age = n;
        year = y;
        mon = m;
    }
};
 
class Engineer : public Employee {
public:
    Engineer() :Employee() {}
};
 
int main() 
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    Employee::begin = 0;
    Employee Employee;
    Admin Admin;
    Worker Worker;
    Engineer Engineer;
 
    cout << "Кадры: " << endl;
    Employee.set_parameters();
 
    cout << "Администрация: " << endl;
    Admin.set_parameters();
 
    cout << "Рабочие: " << endl;
    Worker.set_parameters();
 
    cout << "Инженеры: " << endl;
    Engineer.set_parameters();
 
    cout << "============================" << endl;
    cout << "\tВывод Информации!" << endl;
    cout << "============================" << endl;
 
    Employee.print();
 
    _getch();
    return 0;
}
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
31.03.2021, 20:55
Цитата Сообщение от ANGELin04ka Посмотреть сообщение
static Employee* begin;
    Employee* next;
Это не нужно.
Список сделай при помощи std::list или std::vector
0
 Аватар для Recrut_rf
381 / 324 / 65
Регистрация: 14.10.2014
Сообщений: 1,377
31.03.2021, 20:57
ANGELin04ka, предлагаю сделать абстрактным классом Кадры. В нём написать общие для всех чистые виртуальные функции (по сути интерфейс класса), а уже от него сделать наследников: Рабочий, Инженер, Администрация
1
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
31.03.2021, 20:57
Цитата Сообщение от ANGELin04ka Посмотреть сообщение
int age;
    string familiya;
Возраст и фамилия, наверное, есть у всех сотрудников, независимо от профессии. Или я ошибаюсь?
1
30 / 24 / 6
Регистрация: 24.11.2020
Сообщений: 214
31.03.2021, 20:59  [ТС]
oleg-m1973, Ну да, то есть эти поля нужно ко всем добавить?
0
 Аватар для Recrut_rf
381 / 324 / 65
Регистрация: 14.10.2014
Сообщений: 1,377
31.03.2021, 21:00
да, точно - всё, что может быть общим, должно быть в главном, родительском классе (он же абстрактный)

Добавлено через 34 секунды
Цитата Сообщение от ANGELin04ka Посмотреть сообщение
то есть эти поля нужно ко всем добавить
Эти поля должны быть в родительском классе
1
30 / 24 / 6
Регистрация: 24.11.2020
Сообщений: 214
31.03.2021, 21:02  [ТС]
Recrut_rf, А из других классов их нужно убирать или оставить?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
31.03.2021, 21:02
Цитата Сообщение от ANGELin04ka Посмотреть сообщение
oleg-m1973, Ну да, то есть эти поля нужно ко всем добавить?
Т.е. нужно вынести их в базовый класс. Просто я с трудом могу представить различия в этой иерархии. Обычно их указывают в постановке задаче.
1
 Аватар для Recrut_rf
381 / 324 / 65
Регистрация: 14.10.2014
Сообщений: 1,377
31.03.2021, 21:04
ANGELin04ka, нужно убирать - все общие поля и методы (в нашем случае абстрактные) будут в главном, родительском классе.
1
30 / 24 / 6
Регистрация: 24.11.2020
Сообщений: 214
31.03.2021, 21:12  [ТС]
Recrut_rf, Получается так? Я убрала повторяющиеся поля и добавила другие в другие классы.
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#include <iostream>
#include <conio.h>
#include <string>
#include <vector>
#include <Windows.h>
 
using namespace std;
 
class Employee {
protected:
    string name;
    int age;
    string familiya;
 
public:
    static Employee* begin;
    Employee* next;
 
    static void add(Employee* cur) {
        cur->next = begin;
        begin = cur;
    }
 
    Employee() {
        add(this);
    }
 
    virtual void show() {
        cout << "Имя: " << name << endl;
        cout << "----------------------------" << endl;
    }
 
    virtual void set_parameters() {
        string s;
 
        cout << "Имя: ";
        cin >> s;
 
        name = s;
    }
 
    virtual void print() {
        Employee* l = begin;
 
        while (l) {
            l->show();
            l = l->next;
        }
    }
};
 
Employee* Employee::begin;
 
class Admin : public Employee {
protected:
    int year;//Пусть будет год рождения
    int month;//Месяц рождения
 
public:
    Admin() :Employee() {}
 
    void show() {
        cout << "Имя: " << name << endl;
        cout << "Возраст: " << age << endl;
        cout << "Фамилия: " << familiya << endl;
        cout << "----------------------------" << endl;
    }
 
    void set_parameters() {
        int k;
        string s, a;
 
        cout << "Имя: ";
        cin >> s;
 
        cout << "Фамилия: ";
        cin >> a;
 
        cout << "Возраст: ";
        cin >> k;
 
        name = s;
        familiya = a;
        age = k;
    }
 
};
 
class Worker : public Employee {
protected:
    int PassportNum;//Номер паспорта
    string Grazdanstvo;//Гражданство
 
 
public:
    Worker() :Employee() {}
 
    void show() {
        cout << "Имя: " << name << endl;
        cout << "Возраст: " << age << endl;
        cout << "Месяц и год рождения: " << mon << "." << year << endl;
        cout << "----------------------------" << endl;
    }
 
    void set_parameters() {
        int n, m, y;
        string s;
 
        cout << "Имя: ";
        cin >> s;
 
        cout << "Возраст: ";
        cin >> n;
 
        cout << "Месяц рождения: ";
        cin >> m;
 
        cout << "Год рождения: ";
        cin >> y;
 
        name = s;
        age = n;
        year = y;
        mon = m;
    }
};
 
class Engineer : public Employee {
protected:
    string Obrazovanie;//Степень образования
public:
    Engineer() :Employee() {}
};
 
int main() 
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    Employee::begin = 0;
    Employee Employee;
    Admin Admin;
    Worker Worker;
    Engineer Engineer;
 
    cout << "Кадры: " << endl;
    Employee.set_parameters();
 
    cout << "Администрация: " << endl;
    Admin.set_parameters();
 
    cout << "Рабочие: " << endl;
    Worker.set_parameters();
 
    cout << "Инженеры: " << endl;
    Engineer.set_parameters();
 
    cout << "============================" << endl;
    cout << "\tВывод Информации!" << endl;
    cout << "============================" << endl;
 
    Employee.print();
 
    _getch();
    return 0;
}
0
 Аватар для Recrut_rf
381 / 324 / 65
Регистрация: 14.10.2014
Сообщений: 1,377
31.03.2021, 21:15
ANGELin04ka, вот пример из книги Прата С. Язык программирования С++ Лекции и упражнения
заголовочный файл (.h)
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
// acctabc.h  -- bank account classes
#ifndef ACCTABC_H_
#define ACCTABC_H_
#include <iostream>
#include <string>
 
// Abstract Base Class
class AcctABC
{
private:
    std::string fullName;
    long acctNum;
    double balance;
protected:
    struct Formatting 
    {
         std::ios_base::fmtflags flag;
         std::streamsize pr;
    };
    const std::string & FullName() const {return fullName;}
    long AcctNum() const {return acctNum;}
    Formatting SetFormat() const;
    void Restore(Formatting & f) const;
public: 
    AcctABC(const std::string & s = "Nullbody", long an = -1,
                double bal = 0.0);
    void Deposit(double amt) ;
    virtual void Withdraw(double amt) = 0; // pure virtual function
    double Balance() const {return balance;};
    virtual void ViewAcct() const = 0;     // pure virtual function
    virtual ~AcctABC() {}
};
 
// Brass Account Class
class Brass :public AcctABC
{
public:
    Brass(const std::string & s = "Nullbody", long an = -1,
           double bal = 0.0) : AcctABC(s, an, bal) { }
    virtual void Withdraw(double amt);
    virtual void ViewAcct() const;
    virtual ~Brass() {}
};
 
//Brass Plus Account Class
class BrassPlus : public AcctABC
{
private:
    double maxLoan;
    double rate;
    double owesBank;
public:
    BrassPlus(const std::string & s = "Nullbody", long an = -1,
            double bal = 0.0, double ml = 500,
            double r = 0.10);
    BrassPlus(const Brass & ba, double ml = 500, double r = 0.1);
    virtual void ViewAcct()const;
    virtual void Withdraw(double amt);
    void ResetMax(double m) { maxLoan = m; }
    void ResetRate(double r) { rate = r; };
    void ResetOwes() { owesBank = 0; }
};
 
#endif
реализация (.cpp)
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
// acctabc.cpp -- bank account class methods
#include <iostream>
#include "acctabc.h"
using std::cout;
using std::ios_base;
using std::endl;
using std::string;
 
// Abstract Base Class
AcctABC::AcctABC(const string & s, long an, double bal)
{
    fullName = s;
    acctNum = an;
    balance = bal;
}
 
void AcctABC::Deposit(double amt)
{
    if (amt < 0)
        cout << "Negative deposit not allowed; "
             << "deposit is cancelled.\n";
    else
        balance += amt;
}
 
void AcctABC::Withdraw(double amt)
{
    balance -= amt;
}
 
// protected methods for formatting
AcctABC::Formatting AcctABC::SetFormat() const
{
 // set up ###.## format
    Formatting f;
    f.flag = 
        cout.setf(ios_base::fixed, ios_base::floatfield);
    f.pr = cout.precision(2);
    return f; 
}
 
void AcctABC::Restore(Formatting & f) const
{
    cout.setf(f.flag, ios_base::floatfield);
    cout.precision(f.pr);
}
 
// Brass methods
void Brass::Withdraw(double amt)
{
    if (amt < 0)
        cout << "Withdrawal amount must be positive; "
             << "withdrawal canceled.\n";
    else if (amt <= Balance())
        AcctABC::Withdraw(amt);
    else
        cout << "Withdrawal amount of $" << amt
             << " exceeds your balance.\n"
             << "Withdrawal canceled.\n";
}
 
void Brass::ViewAcct() const
{
   
    Formatting f = SetFormat();
    cout << "Brass Client: " << FullName() << endl;
    cout << "Account Number: " << AcctNum() << endl;
    cout << "Balance: $" << Balance() << endl;
    Restore(f);
}
 
// BrassPlus Methods
BrassPlus::BrassPlus(const string & s, long an, double bal,
           double ml, double r) : AcctABC(s, an, bal)
{
    maxLoan = ml;
    owesBank = 0.0;
    rate = r; 
}
 
BrassPlus::BrassPlus(const Brass & ba, double ml, double r)
           : AcctABC(ba)   // uses implicit copy constructor
{
    maxLoan = ml;
    owesBank = 0.0;
    rate = r;
}
 
void BrassPlus::ViewAcct() const
{
    Formatting f = SetFormat();
 
    cout << "BrassPlus Client: " << FullName() << endl;
    cout << "Account Number: " << AcctNum() << endl;
    cout << "Balance: $" << Balance() << endl;
    cout << "Maximum loan: $" << maxLoan << endl;
    cout << "Owed to bank: $" << owesBank << endl;
    cout.precision(3);
    cout << "Loan Rate: " << 100 * rate << "%\n";
    Restore(f);
}
 
void BrassPlus::Withdraw(double amt)
{
    Formatting f = SetFormat();
 
    double bal = Balance();
    if (amt <= bal)
        AcctABC::Withdraw(amt);
    else if ( amt <= bal + maxLoan - owesBank)
    {
        double advance = amt - bal;
        owesBank += advance * (1.0 + rate);
        cout << "Bank advance: $" << advance << endl;
        cout << "Finance charge: $" << advance * rate << endl;
        Deposit(advance);
        AcctABC::Withdraw(amt);
    }
    else
        cout << "Credit limit exceeded. Transaction cancelled.\n";
    Restore(f); 
}
Правда, на мой взгляд сложноватый пример, можно по-проще сочинить. Но я сейчас спать пойду - завтра рано вставать, а в моей местности уже довольно поздно.
1
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
31.03.2021, 21:22
Цитата Сообщение от ANGELin04ka Посмотреть сообщение
Recrut_rf, Получается так? Я убрала повторяющиеся поля и добавила другие в другие классы.
У тебя получается, что инженер это тот, у кого есть образование (ок, согласен), рабочий - это тот у кого есть гражданство и паспорт, администратор - тот у кого есть год и месяц рождения.
Второе - если ты реализуешь методы в базовом классе, то используй эту реализацию и в наследниках
C++
1
2
3
4
5
6
7
 void show() {
        ///cout << "Имя: " << name << endl;
        Employee::show();
        cout << "Возраст: " << age << endl;
        cout << "Месяц и год рождения: " << mon << "." << year << endl;
        cout << "----------------------------" << endl;
    }
1
 Аватар для Recrut_rf
381 / 324 / 65
Регистрация: 14.10.2014
Сообщений: 1,377
31.03.2021, 21:22
ANGELin04ka, да, только в классе Employee методы должны быть чистыми виртуальными (в примере выше они подписаны как pure virtual function) (хотя бы один), а не просто виртуальными. Иначе класс не будет абстрактным.
Ну и в классах наследниках поля, специфичные для них, лучше делать приватными а не защищёнными (protected). От этих классов ведь не нужно будет наследоваться, как минимум в задании ничего про это не сказано. И зачем использовать указатели? Зачем усложнять себе жизнь, если этого никто не требует?
1
30 / 24 / 6
Регистрация: 24.11.2020
Сообщений: 214
31.03.2021, 21:32  [ТС]
В общем-то я полностью и бесповоротно запуталась
0
30 / 24 / 6
Регистрация: 24.11.2020
Сообщений: 214
02.04.2021, 04:42  [ТС]
oleg-m1973, Решила делать всё с 0, думаю, так будет немного понятнее, пока что сделала так
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
#include <iostream>
#include <conio.h>
#include <string>
#include <vector>
#include <Windows.h>
 
using namespace std;
 
class Employee { //Абстрактный базовый класс кадры
protected:
    string firstname; //Поле, в котором будет храниться имя
    string secondname;//Поле, в котором будет храниться фамилия
    string sex;//Поле, в котором будет храниться пол
    int age;//Поле, в котором будет храниться возраст
public:
    virtual void SetParam() = 0;
    virtual void Show() = 0;
};
 
class Admin : public Employee {//Класс Администрация
protected:
    string otdel;//Поле, задающее, какой отдел
    string street;//Поле, задающее улицу
    string town;//Поле, задающее город
public:
 
    void SetParam()
    {
        string otd, ylica, gorod;
        string imya, familiya, pol;
        int vozrast;
 
        cout << "Введите имя: ";
        cin >> imya;
        firstname = imya;
 
        cout << "Введите фамилию: ";
        cin >> familiya;
        secondname = familiya;
 
        cout << "Введите пол: ";
        cin >> pol;
        sex = pol;
 
        cout << "Введите возраст: ";
        cin >> vozrast;
        age = vozrast;
 
        cout << "Введите отдел администрации: ";
        cin >> otd;
        otdel = otd;
 
        cout << "Введите улицу администрации: ";
        cin >> ylica;
        street = ylica;
 
        cout << "Введите город администрации: ";
        cin >> gorod;
        town = gorod;
    }
    void Show()
    {
        cout << "Администрация: " << endl << endl;
        cout << "Имя администратора: " << firstname << endl;
        cout << "Фамилия администратора: " << secondname << endl;
        cout << "Пол администратора: " << sex << endl;
        cout << "Возраст администратора: " << age << endl;
        cout << "Отдел администрации: " << otdel << endl;
        cout << "Улица администрации: " << street << endl;
        cout << "Город администрации: " << town << endl;
    }
 
    virtual ~Admin() {}
};
 
class Worker : public Employee {//Класс рабочий
protected:
    string specialnost;
public:
 
    void SetParam()
    {
        string spec;
        string imya, familiya, pol;
        int vozrast;
 
        cout << "Введите имя: ";
        cin >> imya;
        firstname = imya;
 
        cout << "Введите фамилию: ";
        cin >> familiya;
        secondname = familiya;
 
        cout << "Введите пол: ";
        cin >> pol;
        sex = pol;
 
        cout << "Введите возраст: ";
        cin >> vozrast;
        age = vozrast;
 
        cout << "Введите специальность рабочего: ";
        cin >> spec;
        specialnost = spec;
    }
    void Show()
    {
        cout << "Рабочие: " << endl << endl;
        cout << "Имя рабочего: " << firstname << endl;
        cout << "Фамилия рабочего: " << secondname << endl;
        cout << "Пол рабочего: " << sex << endl;
        cout << "Возраст рабочего: " << age << endl;
        cout << "Специальность рабочего: " << specialnost << endl;
    }
 
    virtual ~Worker() {}
};
 
class Engineer : public Employee {//Класс Инженер
protected:
    int rank;
    string oblast;//Поля, задающие разряд инженера и область его работы
public:
 
    void SetParam()
    {
        int razryad;
        string obl;
        string imya, familiya, pol;
        int vozrast;
 
        cout << "Введите имя: ";
        cin >> imya;
        firstname = imya;
 
        cout << "Введите фамилию: ";
        cin >> familiya;
        secondname = familiya;
 
        cout << "Введите пол: ";
        cin >> pol;
        sex = pol;
 
        cout << "Введите возраст: ";
        cin >> vozrast;
        age = vozrast;
 
        cout << "Введите разряд иженера(1-5): ";
        cin >> razryad;
        rank = razryad;
 
        cout << "Введите область работы иженера: ";
        cin >> obl;
        oblast = obl;
    }
    void Show()
    {
        cout << "Инженеры: " << endl << endl;
        cout << "Имя инженера: " << firstname << endl;
        cout << "Фамилия инженера: " << secondname << endl;
        cout << "Пол инженера: " << sex << endl;
        cout << "Возраст инженера: " << age << endl;
        cout << "Разряд инженера: " << rank << endl;
        cout << "Область работы иженера: " << oblast << endl;
    }
 
    virtual ~Engineer() {}
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    Admin admin;
    Worker worker;
    Engineer engineer;
 
    cout << "Ввод параметров администрации: " << endl << endl;
    admin.SetParam();
    cout << endl;
    cout << "Ввод параметров рабочих: " << endl;
    worker.SetParam();
    cout << endl;
    cout << "Ввод параметров инженеров: " << endl;
    engineer.SetParam();
    cout << endl << endl;
 
    cout << "Информация о администрации: " << endl << endl;
    admin.Show();
    cout << endl;
    cout << "Информация о рабочих: " << endl;
    worker.Show();
    cout << endl;
    cout << "Информация о инженерах: " << endl;
    engineer.Show();
    cout << endl;
 
    system("pause");
    return 0;
}
Добавлено через 12 минут
Не знаю, в том ли направлении двигаюсь или нет

Добавлено через 1 час 4 минуты
Ещё задалась таким вопросом, можно ли сделать нужное нам кол-во вводов через динамический массив и цикл? Ввести то я могу, а вот выводит пустоту
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
#include <iostream>
#include <conio.h>
#include <string>
#include <vector>
#include <Windows.h>
 
using namespace std;
 
class Employee { //Абстрактный базовый класс кадры
protected:
    string firstname; //Поле, в котором будет храниться имя
    string secondname;//Поле, в котором будет храниться фамилия
    string sex;//Поле, в котором будет храниться пол
    int age;//Поле, в котором будет храниться возраст
public:
    virtual void SetParam() = 0;
    virtual void Show() = 0;
};
 
class Admin : public Employee {//Класс Администрация
protected:
    string otdel;//Поле, задающее, какой отдел
    string street;//Поле, задающее улицу
    string town;//Поле, задающее город
public:
 
    void SetParam()
    {
        string otd, ylica, gorod;
        string imya, familiya, pol;
        int vozrast;
 
        cout << "Введите имя: ";
        cin >> imya;
        firstname = imya;
 
        cout << "Введите фамилию: ";
        cin >> familiya;
        secondname = familiya;
 
        cout << "Введите пол: ";
        cin >> pol;
        sex = pol;
 
        cout << "Введите возраст: ";
        cin >> vozrast;
        age = vozrast;
 
        cout << "Введите отдел администрации: ";
        cin >> otd;
        otdel = otd;
 
        cout << "Введите улицу администрации: ";
        cin >> ylica;
        street = ylica;
 
        cout << "Введите город администрации: ";
        cin >> gorod;
        town = gorod;
    }
    void Show()
    {
        cout << "Администрация: " << endl << endl;
        cout << "Имя администратора: " << firstname << endl;
        cout << "Фамилия администратора: " << secondname << endl;
        cout << "Пол администратора: " << sex << endl;
        cout << "Возраст администратора: " << age << endl;
        cout << "Отдел администрации: " << otdel << endl;
        cout << "Улица администрации: " << street << endl;
        cout << "Город администрации: " << town << endl;
    }
 
    virtual ~Admin() {}
};
 
class Worker : public Employee {//Класс рабочий
protected:
    string specialnost;
public:
 
    void SetParam()
    {
        string spec;
        string imya, familiya, pol;
        int vozrast;
 
        cout << "Введите имя: ";
        cin >> imya;
        firstname = imya;
 
        cout << "Введите фамилию: ";
        cin >> familiya;
        secondname = familiya;
 
        cout << "Введите пол: ";
        cin >> pol;
        sex = pol;
 
        cout << "Введите возраст: ";
        cin >> vozrast;
        age = vozrast;
 
        cout << "Введите специальность рабочего: ";
        cin >> spec;
        specialnost = spec;
    }
    void Show()
    {
        cout << "Рабочие: " << endl << endl;
        cout << "Имя рабочего: " << firstname << endl;
        cout << "Фамилия рабочего: " << secondname << endl;
        cout << "Пол рабочего: " << sex << endl;
        cout << "Возраст рабочего: " << age << endl;
        cout << "Специальность рабочего: " << specialnost << endl;
    }
 
    virtual ~Worker() {}
};
 
class Engineer : public Employee {//Класс Инженер
protected:
    int rank;
    string oblast;//Поля, задающие разряд инженера и область его работы
public:
 
    void SetParam()
    {
        int razryad;
        string obl;
        string imya, familiya, pol;
        int vozrast;
 
        cout << "Введите имя: ";
        cin >> imya;
        firstname = imya;
 
        cout << "Введите фамилию: ";
        cin >> familiya;
        secondname = familiya;
 
        cout << "Введите пол: ";
        cin >> pol;
        sex = pol;
 
        cout << "Введите возраст: ";
        cin >> vozrast;
        age = vozrast;
 
        cout << "Введите разряд иженера(1-5): ";
        cin >> razryad;
        rank = razryad;
 
        cout << "Введите область работы иженера: ";
        cin >> obl;
        oblast = obl;
    }
    void Show()
    {
        cout << "Инженеры: " << endl << endl;
        cout << "Имя инженера: " << firstname << endl;
        cout << "Фамилия инженера: " << secondname << endl;
        cout << "Пол инженера: " << sex << endl;
        cout << "Возраст инженера: " << age << endl;
        cout << "Разряд инженера: " << rank << endl;
        cout << "Область работы иженера: " << oblast << endl;
    }
 
    virtual ~Engineer() {}
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    int numAdmin;//Кол-во администраторов
    int numWorkers;//Кол-во рабочих
    int numEngineers;//Кол-во инженеров
 
    Admin admin;
    Worker worker;
    Engineer engineer;
 
    cout << "Введите число администраторов: "; cin >> numAdmin;
    int* AdminArr = new int[numAdmin];
    for (int i = 0; i < numAdmin; i++)
    {
        cout << "Ввод параметров " << i + 1 << " администратора: " << endl << endl;
        admin.SetParam();
        cout << endl;
    }
 
    cout << "Введите число рабочих: "; cin >> numWorkers;
    int* WorkersArr = new int[numWorkers];
    for (int i = 0; i < numWorkers; i++)
    {
        cout << "Ввод параметров  " << i + 1 << " рабочего: " << endl;
        worker.SetParam();
        cout << endl;
    }
 
    cout << "Введите число инженеров: "; cin >> numEngineers;
    int* EngineersArr = new int[numEngineers];
    for (int i = 0; i < numEngineers; i++)
    {
        cout << "Ввод параметров " << i + 1 << " инженера: " << endl;
        engineer.SetParam();
        cout << endl;
    }
 
    cout << "Информация о администрации: " << endl << endl;
    for (long int i = 0; i < AdminArr[i]; i++)
    {
        admin.Show();
        cout << endl;
    }
 
    cout << "Информация о рабочих: " << endl;
    for (long int i = 0; i < WorkersArr[i]; i++)
    {
        worker.Show();
        cout << endl;
    }
 
    cout << "Информация о инженерах: " << endl;
    for (long int i = 0; i < EngineersArr[i]; i++)
    {
        engineer.Show();
        cout << endl;
    }
 
    system("pause");
    return 0;
}
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
02.04.2021, 11:30
Лучший ответ Сообщение было отмечено ANGELin04ka как решение

Решение

Цитата Сообщение от ANGELin04ka Посмотреть сообщение
Ещё задалась таким вопросом, можно ли сделать нужное нам кол-во вводов через динамический массив и цикл? Ввести то я могу, а вот выводит пустоту
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
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    const size_t N = 100;
    Employee *employees[N];
    size_t n = 0;
 
    size_t n2 = 0;
    cout << "Введите число администраторов: "; 
    cin >> n2;
    for (size_t i = 0; i < n2 && n < N; i++)
    {
        cout << "Ввод параметров " << i + 1 << " администратора: " << endl << endl;
        auto *p =  new Admin();
        p->SetParam();
        employees[n++] = p;
        cout << endl;
    }
 
    cout << "Введите число рабочих: ";
    cin >> n2;
 
    for (size_t i = 0; i < n2 && n < N; i++)
    {
        cout << "Ввод параметров " << i + 1 << " администратора: " << endl << endl;
        auto *p =  new Worker ();
        p->SetParam();
        employees[n++] = p;
        cout << endl;
    }
....................................................
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.04.2021, 11:30
Помогаю со студенческими работами здесь

Построить иерархию классов
Построить иерархию классов. Корень иерархии - абстрактный класс с указанными в условии задачи виртуальными функциями. образовать...

Реализовать иерархию классов, используя виртуальные функции
Здравствуйте! Хочется убедиться, что я правильно поняла задание. Буду благодарна за помощь!(особенно интересует последний пункт) От...

Построить иерархию классов: Аптека, Магазин, Гастроном
:hysteric:Практическое задание &quot;Наследование&quot; Построить иерархию классов: Аптека, Магазин, Гастроном. Один класс должен быть...

Построить иерархию классов точка, отрезок, треугольник
Добрый день, пожалуйста, помогите. Нужно Построить иерархию классов: точка, отрезок, треугольник с виртуальной функцией mesure, вычисляющей...

Абстрактный класс,массив классов,наследование
Доброго времени суток,нужна помощь в решении вот такой задачки: 1)Создать абстрактный класс Vehicle. На его основе реализовать классы...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru