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

Класс меню

07.10.2022, 15:32. Показов 1671. Ответов 19
Метки c++, cpp, oop (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "../include/Hospital.h"
#include "../include/Menu.h"
using namespace std;
 
void Hospital::Run(){
 
    Menu menu;
    Registry registry;
 
    registry.AddDoctor();
 
}
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
#include "../include/Menu.h"
#include <iostream>
using namespace std;
 
void Menu::SetRunning(bool running) {
 
    this->running = running;
}
 
bool Menu::IsRunning() {
 
    return running;
}
 
void Menu::PrintMenu() {
 
    cout << "Оберіть функцію: " << endl;
}
 
 
int Menu::GetInput() {
 
    int select;
    cin >> select;
    while (cin.get() != '\n');
 
    while (select > 8 || select < 0){
 
        cout << "Некоректний номер функції!" << endl;
        cout << "Оберіть функцію: " << endl;
        cout << "➡ ";
        cin >> select;
        while (cin.get() != '\n');
    }
 
    return select;
 
}
 
void Menu::RunMenu() {
 
    int select;
 
    do {
 
        PrintMenu();
        select = GetInput();
        Perform(select);
 
    } while (IsRunning());
}
 
void Menu::Perform(int select) {
 
    switch (select) {
 
        case 1: {
 
            SetRunning(true);
 
            cout << "Бажаєте продовжити роботу? 1 - так, 2 - ні" << endl;
            cout << "➡ ";
            cin >> select;
 
            while (cin.get() != '\n');
 
            if (select != 1) {
 
                SetRunning(false);
                exit(0);
            }
 
            break;
        }
 
        case 2: {
 
            SetRunning(true);
            cout << "Бажаєте продовжити роботу? 1 - так, 2 - ні" << endl;
            cout << "➡ ";
            cin >> select;
 
            while (cin.get() != '\n');
 
            if (select != 1) {
 
                SetRunning(false);
                exit(0);
            }
            break;
        }
 
        case 3: {
 
            SetRunning(true);
            cout << "Бажаєте продовжити роботу? 1 - так, 2 - ні" << endl;
            cout << "➡ ";
            cin >> select;
 
            while (cin.get() != '\n');
 
            if (select != 1) {
 
                SetRunning(false);
                exit(0);
            }
            break;
        }
 
        case 4: {
 
            SetRunning(true);
            cout << "Бажаєте продовжити роботу? 1 - так, 2 - ні" << endl;
            cout << "➡ ";
            cin >> select;
 
            while (cin.get() != '\n');
 
            if (select != 1) {
 
                SetRunning(false);
                exit(0);
            }
            break;
        }
 
        case 5: {
 
            SetRunning(true);
            cout << "Бажаєте продовжити роботу? 1 - так, 2 - ні" << endl;
            cout << "➡ ";
            cin >> select;
 
            while (cin.get() != '\n');
 
            if (select != 1) {
 
                SetRunning(false);
                exit(0);
            }
            break;
        }
 
        case 6: {
 
            SetRunning(true);
            cout << "Бажаєте продовжити роботу? 1 - так, 2 - ні" << endl;
            cout << "➡ ";
            cin >> select;
 
            while (cin.get() != '\n');
 
            if (select != 1) {
 
                SetRunning(false);
                exit(0);
            }
            break;
 
        }
 
        case 7: {
 
            SetRunning(true);
            cout << "Бажаєте продовжити роботу? 1 - так, 2 - ні" << endl;
            cout << "➡ ";
            cin >> select;
 
            while (cin.get() != '\n');
 
            if (select != 1) {
 
                SetRunning(false);
                exit(0);
            }
            break;
 
        }
 
        case 8: {
 
            SetRunning(true);
            cout << "Бажаєте продовжити роботу? 1 - так, 2 - ні" << endl;
            cout << "➡ ";
            cin >> select;
 
            while (cin.get() != '\n');
 
            if (select != 1) {
 
                SetRunning(false);
                exit(0);
            }
 
            break;
        }
 
        case 0: {
 
            SetRunning(false);
            exit(0);
        }
 
        default:  {
 
            break;
        }
 
    }
}
Всем привет, такой вопрос: вот например, раньше я делал просто меню в main(), вызывал в нем функции и т.д. Если я хочу сейчас сделать меню как класс, и хочу чтобы в этом классе был метод который бы вызывал методы другого класса, например как я сейчас написал в примере.

Если у меня класс Registry хранит вектор докторов, и у этого класса есть метод AddDoctor() - добавить доктора. Как мне в класс Menu как бы передать этот объект чтоб в методе Perfrom() класса Menu вызвался метод AddDoctor() класса Registry и добавил доктора в мой вектор докторов который хранится в классе Registry

Помогите пожалуйста, или скажите может я как то не так размышляю, вообщем как сделать правильно.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.10.2022, 15:32
Ответы с готовыми решениями:

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

Класс меню!
День добрый!Как создать класс меню?

Класс строка. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса
Здравствуйте народ, есть такая задача. Определить класс &quot;строка&quot;. в классе предусмотреть следующие поля: - адрес первого элеметна...

19
 Аватар для Tanya2007
593 / 230 / 72
Регистрация: 13.05.2020
Сообщений: 412
07.10.2022, 17:49
Если я правильно вас поняла, то вам надо объявить класс Registry дружественным по отношению к классу Menu

В классе Menu написать строку
C++
1
friend class Registry;
Тогда registry будет иметь доступ к методам класса Menu

Добавлено через 8 минут
Или наоборот. Если написать в классе Registry строку
C++
1
friend class Menu;
, то тогда Menu будет иметь доступ к методам класса Registry
1
7 / 6 / 1
Регистрация: 04.10.2021
Сообщений: 268
07.10.2022, 18:23  [ТС]
Tanya2007, наверно так) спасибо, а так вообще принято делать? или все таки лучше как то переписать мое меню? А то не очень понимаю правильно ли я вообще думаю

Добавлено через 4 минуты
В любом случае, мне же нужно как то передать в меню объект Registry, чтоб он понимал какой объект ему надо менять?

Добавлено через 17 минут
Вкратце мне нужно чтобы в этом меню вызывались методы другого обьекта, например пользователь выбрал в меню пункт 1 - Добавить доктора, значит нужно вызвать метод AddDoctor() объекта Registry чтоб он добавил доктора в вектор докторов
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
07.10.2022, 19:52
Лучший ответ Сообщение было отмечено vadyansky как решение

Решение

Цитата Сообщение от vadyansky Посмотреть сообщение
а так вообще принято делать?
Вообще желательно, чтоб меню ничего не знало о том, что оно исполняет.

Цитата Сообщение от vadyansky Посмотреть сообщение
Вкратце мне нужно чтобы в этом меню вызывались методы другого обьекта, например пользователь выбрал в меню пункт 1 - Добавить доктора, значит нужно вызвать метод AddDoctor() объекта Registry чтоб он добавил доктора в вектор докторов
Да. Вот такая идея более правильная.

Пример:

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
#include <iostream>
#include <string>
#include <map>
#include <functional>
 
struct MenuItem {
    std::string key;
    std::string text;
    std::function<int()> function;
};
 
class Menu {
public:
    Menu(std::initializer_list<MenuItem> items) : items() {
        for (auto &item : items) {
            this->items.insert({item.key, item});
        }
    }
 
    // функция работы с меню
    // эту функцию можно и дальше декомпозировать, но для простоты сделаю одним куском
    int run() {
        int result = 0; // флаг выхода
        do {
            // выводим меню
            for (const auto &item : items) {
                std::cout << item.first << "] " << item.second.text << std::endl;
            }
            // вводим
            std::string input;
            std::cin >> input;
            auto item = items.find(input); // ищем такой элемент меню
            if (item == items.end()) { // если нет
                // выводим сообщение об ошибке
                std::cout << "No such menu element." << std::endl;
            } else {
                // если нашлось, то вызываем функцию. если функция возвращает не 0, прерываем выолнение
                result = item->second.function() != 0;
            }
        } while (result == 0);
        return result;
    }
 
private:
    std::unordered_map<std::string, MenuItem> items;
};
 
int main() {
    std::string name = "Doctor";
 
    Menu menu{
            {"1", "Hello World", []() {
                std::cout << "Hello World\n";
                return 0;
            }},
            {"2", "Hello Name", [&]() {
                std::cout << "Hello " << name << "\n";
                return 0;
            }},
            {"0", "Quit", []() {
                std::cout << "Bye\n";
                return 1;
            }},
 
    };
 
    menu.run();
 
    return 0;
}
1
7 / 6 / 1
Регистрация: 04.10.2021
Сообщений: 268
07.10.2022, 20:05  [ТС]
lemegeton, спасибо, а где мне тут говорить ему какую функцию вызывать?
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
07.10.2022, 20:08
Третье поле структуры MenuItem -- функтор. В нем пишите то поведение, которое должно происходить по вызову элемента меню.

В примере:
C++
1
2
3
4
5
6
7
8
            {"1", "Hello World", 
// функция, выполняющаяся по выбору первого пункта
[]() {
    std::cout << "Hello World\n";
    return 0;
}
// ----
},
1
7 / 6 / 1
Регистрация: 04.10.2021
Сообщений: 268
07.10.2022, 20:09  [ТС]
lemegeton, а вот есть [] (), квадратные, круглые скобочки, за что каждая из них отвечает?
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
07.10.2022, 20:10
Это функции, которые описываются "на месте". Называются "лямбда-функции".
Синтаксис можно почитать в интернетах.
1
7 / 6 / 1
Регистрация: 04.10.2021
Сообщений: 268
07.10.2022, 20:15  [ТС]
lemegeton,

C++
1
2
3
4
{"2", "Hello Name", [&]() {
                std::cout << "Hello " << name << "\n";
                return 0;
            }},
А зачем тут значок ссылки?
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
07.10.2022, 20:17
Цитата Сообщение от vadyansky Посмотреть сообщение
А зачем тут значок ссылки?
Прочитайте, пожалуйста, про синтаксис таких функций.
Этот "значок" нужен, чтоб из функции можно было читать переменные, которые в ней не объявлены.
0
7 / 6 / 1
Регистрация: 04.10.2021
Сообщений: 268
07.10.2022, 20:19  [ТС]
lemegeton, понял, спасибо, тут конечно много штук которых я не знаю по типу initializer_list, unordered_map но я попробую разобраться
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
07.10.2022, 23:12
Лучший ответ Сообщение было отмечено vadyansky как решение

Решение

Цитата Сообщение от vadyansky Посмотреть сообщение
которых я не знаю по типу initializer_list, unordered_map но я попробую разобраться
Я лишь показал концепцию.
Создаёте набор элементов меню, с именем и функцией.
Выводите на экран.
Вводите номер пункта.
Ищете этот пункт в наборе элементов меню.
Вызываете функцию.

Организацию кода перепишите так, как вам понятно/нравится.
1
7 / 6 / 1
Регистрация: 04.10.2021
Сообщений: 268
08.10.2022, 11:33  [ТС]
lemegeton,

C++
1
2
3
4
5
6
 
struct MenuItem {
    std::string key;
    std::string text;
    std::function<int()> function;
};
А вы тут написали function<int()> а что если например у меня в программе должны вызываться функции не только типа int?
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
08.10.2022, 11:38
Цитата Сообщение от vadyansky Посмотреть сообщение
А вы тут написали function<int()> а что если например у меня в программе должны вызываться функции не только типа int?
Этот контракт -- возвращение int -- я придумал для того, чтоб функция могла завершить работу класса "меню", вернув "не ноль".
Вот тут, смотрите, переменная, назначение и условие выхода из цикла:
Цитата Сообщение от lemegeton Посмотреть сообщение
result = item->second.function() != 0;
            }
        } while (result == 0);
0
7 / 6 / 1
Регистрация: 04.10.2021
Сообщений: 268
08.10.2022, 11:55  [ТС]
lemegeton,


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
class Menu {
 
private:
 
    struct menuItem {
 
        int key;
        string text;
        function<void()> function;
 
    };
 
    vector<menuItem> menuItems;
    bool running = false;
 
public:
 
    Menu(vector<menuItem> menuItems) {
 
        for (auto &item: menuItems) {
 
            this->menuItems.push_back({item.key, item.text, item.function});
        }
    }
 
    void RunMenu();
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void Hospital::Run(){
 
    Registry registry;
    Menu menu = {
            {1, "Hello", registry.ShowAllDoctors()}
    };
 
    menu.RunMenu();
 
    registry.ShowAllDoctors();
 
 
}
Code
1
No matching constructor for initialization of 'Menu' candidate constructor (the implicit copy constructor) not viable: cannot convert initializer list argument to 'const Menu' candidate constructor (the implicit move constructor) not viable: cannot convert initializer list argument to 'Menu' candidate constructor not viable: cannot convert initializer list argument to 'vector<Menu::menuItem>'
Если я хочу например с вектором, нельзя сделать так?
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
08.10.2022, 12:03
Лучший ответ Сообщение было отмечено vadyansky как решение

Решение

Давайте чуть понижу уровень синтаксиса, сделаю без мапы и приведу пример с "регистром" и "докторами".

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
#include <iostream>
#include <vector>
#include <functional>
#include <string>
 
using Function = std::function<int()>;
 
struct MenuItem {
    std::string name;
    Function function;
};
 
class Menu {
public:
    Menu(std::initializer_list<MenuItem> items) : items(items) {}
 
    int run() {
        while (true) {
            // печать
            for (std::size_t i = 0; i < items.size(); ++i) {
                std::cout << i << "] " << items[i].name << std::endl;
            }
            // ввод
            std::size_t number;
            std::cin >> number;
 
            // вызов функции меню
            if (number < items.size()) {
                std::cout << "You have selected menu item " << number << " - '" << items[number].name << "'.\n";
                // вызов функции
                int result = items[number].function();
                // если функция вернула не ноль,
                if (result != 0) {
                    return result; // выходим
                }
            } else {
                // нет такого номер меню, сообщение
                std::cout << "Menu item number " << number << " not found.\n";
            }
 
        }
    }
 
private:
    std::vector<MenuItem> items;
};
 
struct Doctor {
    int id;
    std::string name;
};
 
std::istream &operator>>(std::istream &in, Doctor &d) {
    return in >> d.id >> d.name;
}
 
std::ostream &operator<<(std::ostream &out, const Doctor &d) {
    return out << "Doctor{id=" << d.id << ",name='" << d.name << "'}";
}
 
std::ostream &operator<<(std::ostream &out, const std::vector<Doctor> &doctors) {
    for (const auto &d : doctors) {
        out << d << "\n";
    }
    return out;
}
 
class Registry {
public:
    Registry() : data() {}
 
    void add(const Doctor &doctor) {
        data.push_back(doctor);
    }
 
    const std::vector<Doctor> &getData() {
        return data;
    }
 
private:
    std::vector<Doctor> data;
};
 
int main() {
 
    Registry registry;
 
    Menu menu{
            {"Add doctor",     [&]() {
                Doctor doctor;
                std::cin >> doctor;
                registry.add(doctor);
                std::cout << "Added doctor " << doctor << "\n";
                return 0;
            }},
            {"Print doctors",     [&]() {
                std::cout << "Doctors:\n" << registry.getData() << "\n";
                return 0;
            }},
            {"Quit",        []() {
                return 1;
            }}
    };
 
    menu.run();
 
    return 0;
}
Добавлено через 1 минуту
Обратите внимание, что эти функции в MenuItem-ах реализуют прослойку между объектами и вводом.
Их тоже можно оформить в виде отдельных функций, если очень хочется.
1
7 / 6 / 1
Регистрация: 04.10.2021
Сообщений: 268
08.10.2022, 12:04  [ТС]
lemegeton, спасибо, а что это значит строка

C++
1
Registry() : data() {}
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
08.10.2022, 12:05
Всё же это, можно сказать, "бизнес-логика" приложения.

Упрощённо:
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
#include <iostream>
#include <vector>
#include <functional>
#include <string>
 
using Function = std::function<int()>;
 
struct MenuItem {
    std::string name;
    Function function;
};
 
class Menu {
public:
    Menu(std::initializer_list<MenuItem> items) : items(items) {}
 
    int run() {
        while (true) {
            // печать
            for (std::size_t i = 0; i < items.size(); ++i) {
                std::cout << i << "] " << items[i].name << std::endl;
            }
            // ввод
            std::size_t number;
            std::cin >> number;
 
            // вызов функции меню
            if (number < items.size()) {
                std::cout << "You have selected menu item " << number << " - '" << items[number].name << "'.\n";
                // вызов функции
                int result = items[number].function();
                // если функция вернула не ноль,
                if (result != 0) {
                    return result; // выходим
                }
            } else {
                // нет такого номер меню, сообщение
                std::cout << "Menu item number " << number << " not found.\n";
            }
 
        }
    }
 
private:
    std::vector<MenuItem> items;
};
 
struct Doctor {
    int id;
    std::string name;
};
 
std::istream &operator>>(std::istream &in, Doctor &d) {
    return in >> d.id >> d.name;
}
 
std::ostream &operator<<(std::ostream &out, const Doctor &d) {
    return out << "Doctor{id=" << d.id << ",name='" << d.name << "'}";
}
 
std::ostream &operator<<(std::ostream &out, const std::vector<Doctor> &doctors) {
    for (const auto &d : doctors) {
        out << d << "\n";
    }
    return out;
}
 
class Registry {
public:
    Registry() : data() {}
 
    void add(const Doctor &doctor) {
        data.push_back(doctor);
    }
 
    const std::vector<Doctor> &getData() {
        return data;
    }
 
private:
    std::vector<Doctor> data;
};
 
struct DoctorService {
    Registry &registry;
 
    void addDoctor() {
        Doctor doctor;
        std::cin >> doctor;
        registry.add(doctor);
        std::cout << "Added doctor " << doctor << "\n";
    }
 
    void printDoctors() {
        std::cout << "Doctors:\n" << registry.getData() << "\n";
    }
};
 
int main() {
 
    Registry registry;
 
    DoctorService doctorService{registry};
 
    Menu menu{
            {"Add doctor",     [&]() {
                doctorService.addDoctor();
                return 0;
            }},
            {"Print doctors",     [&]() {
                doctorService.printDoctors();
                return 0;
            }},
            {"Quit",        []() {
                return 1;
            }}
    };
 
    menu.run();
 
    return 0;
}
1
7 / 6 / 1
Регистрация: 04.10.2021
Сообщений: 268
08.10.2022, 12:06  [ТС]
C++
1
Menu(std::initializer_list<MenuItem> items) : items(items) {}
и вот эта
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
08.10.2022, 12:12
Цитата Сообщение от vadyansky Посмотреть сообщение
lemegeton, спасибо, а что это значит строка
Это инициализация члена класса с именем data в конструкторе этого класса.

Добавлено через 1 минуту
Часть синтаксиса С++. См. "списки инициализации".
Данные должны быть инициализированы. Это -- синтаксис, как их инициализировать.

Добавлено через 2 минуты
Цитата Сообщение от vadyansky Посмотреть сообщение
items(items)
Тут немного путано получилось, потому что параметр конструктора items имеет то же имя, что и член класса items.
По синтаксису, тут первое "items" это член класса, а второе "items" это параметр конструктора.
Получается, что член класса инициализируется конструктором с передачей ему в качестве значения параметра конструктора.
Это работает, потому что у класса vector есть конструктор, который принимает initializer_list.
Так данные попадают из конструктора в член класса.

Добавлено через 41 секунду
Возможно так было бы потянее.
C++
1
Menu(std::initializer_list<MenuItem> menuItems) : items(menuItems) {}
Добавлено через 1 минуту
Синтаксис С++ развивался шагами, с сохранением обратной совместимости.
Поэтому иногда он не слишком... интуитивно понятный, скажем так.
Но всё это не рокет-сайенс и сделано человеками для человеков.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.10.2022, 12:12
Помогаю со студенческими работами здесь

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени?
На самом деле ничё фантастического я не прошу, ведь: template &lt;class T&gt; class matrix { friend class diagonal; ...

Класс "Вектор", меню для демонстрации его возможностей
Ребят, помоги разобраться с переменными, не могу сообразить. Там в классе конструктор со встроенными параметрами для 1-го вектора... и 2-ой...

Класс таблиц баз данных и класс записей в таблице(реляционная таблица). Предусмотреть класс связей между таблицами
Здравствуйте! Никак не могу продумать структуру этой программы. Проходим наследование, но я все равно не знаю, как его здесь применить. Как...

Класс: Разработать абстрактный класс класс Point для задания координаты...
Всем привет, помогите пожалуйста решить задачу, я уже всю голову сломал, не знаю как решить... Разработать абстрактный класс класс...

Отдельно класс данных, класс формул и главный класс
Здравствуйте! У меня есть три вопроса. Первый вопрос. Скажите пожалуйста! Правильный ли это подход к созданию приложений :...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru