Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.09.2019
Сообщений: 86

Реализация класса со списком объектов множества

11.04.2020, 20:30. Показов 3491. Ответов 41
Метки нет (Все метки)

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

При удалении использовал erase(), думал, что можно просто передать элемент, который мы хотим удалить(перед этим ввести его в main), и удалить его, но нет.

При изменении элемента думал, что можно просто удалить этот элемент и записать новый(не нужно отдельное поле изменять, просто полностью элемент переписать, поэтому так можно), но тоже не работает. Когда реализовал с вектором, то там было проще: были индексы.

Также не представляю как сортировать элементы по любому направлению и полю, если множество априори сортирует по возрастанию.
Весь код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef SETLIST__H
#define SETLIST_H
 
#include <iostream>
#include <set>
#include "abiturient.h"
 
using namespace std;
 
class AbiturientSet : public  set<Abiturient*>
{
public:
    void add(Abiturient* a);
    void deleteElem(Abiturient* a);
    void changeElem(Abiturient* a);
    bool search(Abiturient& a);
    friend ostream& operator << (ostream& out, const AbiturientSet& set);
    void menu(void);
};
 
#endif
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
#include "setList.h"    
 
void AbiturientSet::add(Abiturient* a)
{
    this->insert(a);
}
 
void AbiturientSet::deleteElem(Abiturient* a)
{
    this->erase(a);
}
 
void AbiturientSet::changeElem(Abiturient* a)
{
    deleteElem(a);
    add(a);
}
 
bool AbiturientSet::search(Abiturient& a)
{
    for (int i = 0; i < this->size(); i++)
    {
        if (a == *(*this)[i])
        {
            return true;
        }
        else
        {
            return false;
        }
    
}
 
ostream& operator << (ostream& out, const AbiturientSet& set)
{
    out << "В множестве присутствуют следующие объекты: " << endl;
    for (auto it = set.begin(); it != set.end(); it++)
    {
        Abiturient* a;
        a = *it;
        out << a << endl;
    }
    return out;
}
 
void AbiturientSet::menu(void)
{
    cout << "================Меню==============" << endl
        << "1. Добавить элемент." << endl
        << "2. Удалить элемент." << endl
        << "3. Поиск." << endl
        << "4. Изменить элемент." << endl
        << "5. Вывести все элементы." << endl
        << "0. Выход." << endl
        << "Введите пункт меню: ";
}
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
#ifndef ABITURIENT_H
#define ABITURIENT_H
 
#include <iostream>
#include <string>
 
using namespace std;
 
class Abiturient
{
private:
    int number;
    string surname;
    string address;
    float average;
    int markMath;
    int markRus;
    int markPhys;
public:
    Abiturient();
    Abiturient(const Abiturient& cop);
    Abiturient(int number, string fio, string adress, float average, int markmath, int markrus, int markphys);
    void setNumber(int abiturientNumber);
    int getNumber();
    void setSurname(string abiturientName);
    string getSurname();
    void setAddress(string abiturientAddress);
    string getAddress();
    void setAverage(float abiturientAverage);
    float getAverage();
    void setMarkMath(int abiturientMarkMath);
    int getMarkMath();
    void setMarkRus(int abiturientMarkRus);
    int getMarkRus();
    void setMarkPhys(int abiturientMarkPhys);
    int getmarkPhys();
    void add(istream& cin);
    bool operator == (Abiturient* eq);
    friend ostream& operator<<(ostream& Cout, Abiturient* abit);
    friend istream& operator>>(istream& cin, Abiturient& abit);
};
#endif
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
#include "abiturient.h"
 
Abiturient::Abiturient()
{
    this->number = 0;
    this->surname = "";
    this->address = "";
    this->average = 0.0;
    this->markMath = 0;
    this->markRus = 0;
    this->markPhys = 0;
}
 
Abiturient::Abiturient(const Abiturient& cop)
{
    this->number = cop.number;
    this->surname = cop.surname;
    this->address = cop.address;
    this->average = cop.average;
    this->markMath = cop.markMath;
    this->markRus = cop.markRus;
    this->markPhys = cop.markPhys;
}
 
Abiturient::Abiturient(int number, string surname, string adress, float average, int markmath, int markrus, int markphys)
{
    this->number = number;
    this->surname = surname;
    this->address = adress;
    this->average = average;
    this->markMath = markmath;
    this->markRus = markrus;
    this->markPhys = markphys;
}
 
void Abiturient::setNumber(int abiturientNumber)
{
    number = abiturientNumber;
}
 
int Abiturient::getNumber()
{
    return number;
}
 
void Abiturient::setSurname(string abiturientName)
{
    surname = abiturientName;
}
 
string Abiturient::getSurname()
{
    return surname;
}
 
void Abiturient::setAddress(string abiturientAddress)
{
    address = abiturientAddress;
}
 
string Abiturient::getAddress()
{
    return address;
}
 
void Abiturient::setAverage(float abiturientAverage)
{
    average = abiturientAverage;
}
 
float Abiturient::getAverage()
{
    return average;
}
 
void Abiturient::setMarkMath(int abiturientMarkMath)
{
    markMath = abiturientMarkMath;
}
 
int Abiturient::getMarkMath()
{
    return markMath;
}
void Abiturient::setMarkRus(int abiturientMarkRus)
{
    markRus = abiturientMarkRus;
}
 
int Abiturient::getMarkRus()
{
    return markRus;
}
 
void Abiturient::setMarkPhys(int abiturientMarkPhys)
{
    markPhys = abiturientMarkPhys;
}
 
int Abiturient::getmarkPhys()
{
    return markPhys;
}
 
bool Abiturient::operator ==(Abiturient* eq)
{
    if (this->number == eq->number && this->surname == eq->surname &&
        this->average == eq->average && this->address == eq->address &&
        this->markMath == eq->markMath && this->markRus == eq->markRus &&
        this->markPhys == eq->markPhys)
    {
        return true;
    }
    else
    {
        return false;
    }
}
 
void Abiturient::add(istream& cin) 
{
    cout << "Номер Фамилия Адрес Средняя оценка Оценка по математика Оценка по русскому Оценка по физике: ";
    cin >> number >> surname >> address >> average >> markMath >> markRus >> markPhys;
}
 
ostream& operator<<(ostream& Cout, Abiturient* abit)
{
    string temp = "Номер: ";
    temp += to_string(abit->getNumber());
    temp += ", ФИО: ";
    temp += abit->getSurname();
    temp += ", Адрес: ";
    temp += abit->getAddress();
    temp += " , Средний балл абитуриента: ";
    temp += to_string(abit->getAverage());
    temp += ", Оценка по математике: ";
    temp += to_string(abit->getMarkMath());
    temp += ", Оценка по русскому: ";
    temp += to_string(abit->getMarkRus());
    temp += ", Оценка по физике: ";
    temp += to_string(abit->getmarkPhys());
    Cout << temp;
    return Cout;
}
 
istream& operator >>(istream& cin, Abiturient& abit) 
{
    abit.add(cin);
    return cin;
}
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
#include <iostream>
#include <Windows.h>
#include "abiturient.h"
#include "setList.h"
 
 
int main(int argc, char* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    AbiturientSet l;
    while (true)
    {
        l.menu();
 
        int choise = 0;
        cin >> choise;
        switch (choise)
        {
 
        case 1:
        {
            system("cls");
            Abiturient* elem = new Abiturient();
            cin >> *elem;
            l.add(elem);
            cout << "Элемент успешно добавлен!" << endl;
            system("pause");
            system("cls");
            break;
        }
 
        case 2:
        {
            system("cls");
            cout << "Введите элемент, который хотите удалить: "<<endl;
            Abiturient* elem1 = new Abiturient();
            cin >> *elem1;
            l.deleteElem(elem1);
            system("pause");
            system("cls");
            break;
        }
 
        case 3:
        {
            system("cls");
            cout << "Введите элемент, который хотите найти: " << endl;
            Abiturient* elem2 = new Abiturient();
            cin >> *elem2;
            if (l.search(*elem2))
            {
                cout << elem2 << endl;
            }
            else
            {
                break;
            }
            system("pause");
            system("cls");
            break;
        }
 
        case 4:
        {
            system("cls");
            cout << "Введите элемент, который хотите изменить: " << endl;
            Abiturient* elem2 = new Abiturient();
            cin >> *elem2;
            l.changeElem(elem2);
            system("pause");
            system("cls");
            break;
        }
 
        case 5:
        {
            system("cls");
            cout << l;
            system("pause");
            system("cls");
            break;
        }
 
        case 0:
        {
            return 0;
        }
        break;
        }
    }
}
Возможно, что я не так реализую методы в main. Также в search() выдаёт ошибку в 5-ой строчке, что отсутствует оператор [] соответствующий этим операндам(я так понимаю, потому что его в множестве и нет).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
bool AbiturientSet::search(Abiturient& a)
{
    for (int i = 0; i < this->size(); i++)
    {
        if (a == *(*this)[i])
        {
            return true;
        }
        else
        {
            return false;
        }
    
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.04.2020, 20:30
Ответы с готовыми решениями:

Реализация класса множества
Реализую класс множества. Некорректно работает удаление элемента из множества. Прошу помощи //...

Задать метод события для множества объектов одного класса
Здравствуйте! Вынужден обратиться к опытным людям за советом. Имеется форма, на которой есть 60 label'ов. Необходимо, чтобы при событии...

Объект для работы со списком объектов класса "Автомобиль"
Доброго времени суток! Помогите разобраться с задачей &quot;Объявить объект для работы со списком вышеуказанных объектов .&quot; (объекты...

41
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
12.04.2020, 16:49
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от _Beginner_ Посмотреть сообщение
Нормально так будет?
C++
1
2
3
            for (auto it = l.begin(); it != l.end(); it++) {
                cout << *(*it);
            }
0
0 / 0 / 0
Регистрация: 20.09.2019
Сообщений: 86
12.04.2020, 16:57  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
for (auto it = l.begin(); it != l.end(); it++) {
                cout << *(*it);
            }
Понятно, спасибо, изменил.
Но я не понимаю как адекватно реализовать изменение элемент, вот как у меня сейчас:
C++
1
2
3
4
5
void AbiturientSet::changeElem(Abiturient* a)
{
    deleteElem(*a);
    add(a);
}
И как в main():
C++
1
2
3
4
cout << "Введите элемент, который хотите изменить: " << endl;
            Abiturient* elem2 = new Abiturient();
            cin >> *elem2;
            l.changeElem(elem2);
По сути должно работать: вводим элемент, удаляем такой, добавляем новый, но не работает

А для сортировки нужно реализовать, чтобы подходящий компоратор предоставлял возможность сортировать по любому полю и направлению. Я так понимаю это о том, что вы писали выше про перегрузку оператора >, но как это реализовать для сортировки множества объектов?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
12.04.2020, 17:39
Цитата Сообщение от _Beginner_ Посмотреть сообщение
По сути должно работать: вводим элемент, удаляем такой, добавляем новый, но не работает
У тебя поиск идёт по всем атрибутам класса Abiturient. Т.е. ты удаляешь элемент и сразу добавляешь новый, точно такой же.
0
0 / 0 / 0
Регистрация: 20.09.2019
Сообщений: 86
12.04.2020, 22:17  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
У тебя поиск идёт по всем атрибутам класса Abiturient. Т.е. ты удаляешь элемент и сразу добавляешь новый, точно такой же.
Понял. Сделал по-другому, всё работает:
C++
1
2
3
4
5
6
7
8
9
10
11
void AbiturientSet::changeElem(const Abiturient& a,  Abiturient*b)
{
    auto it = this->begin();
    for (auto end = this->end(); it != end; ++it)
        if (*(*it) == a)
        {
            deleteElem(a);
            add(b);
            break;
        }
}
C++
1
2
3
4
5
6
7
cout << "Введите элемент, который хотите изменить: " << endl;
            Abiturient* elem2 = new Abiturient();
            cin >> *elem2;
            cout << "Введите новый элемент: " << endl;
            Abiturient* elem3 = new Abiturient();
            cin >> *elem3;
            l.changeElem(*elem2, elem3);
Нормально будет так? Ищем элемент, удаляем его и добавляем новый
Единственное только, что он не будет вставляться на то же место, но тут без индексов я не знаю как сделать

Добавлено через 4 часа 23 минуты
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Тебе здесь нужно сделать для класса Abiturient оператор меньше - bool operator < (const Abiturient &) const
Реализовал оператор меньше и ещё оператор больше(нужно же в двух направлениях сортировать). Получилось так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bool Abiturient::operator <(const Abiturient& e1)const 
{
    return this->number < e1.number&& this->surname < e1.surname&&
        this->average < e1.average&& this->address < e1.address&&
        this->markMath < e1.markMath&& this->markRus < e1.markRus&&
        this->markPhys < e1.markPhys;
}
 
bool Abiturient::operator >(const Abiturient& e1)const
{
    return this->number > e1.number&& this->surname > e1.surname&&
        this->average > e1.average&& this->address > e1.address&&
        this->markMath > e1.markMath&& this->markRus > e1.markRus&&
        this->markPhys > e1.markPhys;
}
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
а в качестве контейнера - std::vector<Abiturient>, который нужно будет сортировать после изменений
Но как это сделать не понимаю, не могли бы Вы наглядно показать как должна выглядеть сортировка?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
12.04.2020, 22:19
Цитата Сообщение от _Beginner_ Посмотреть сообщение
Реализовал оператор меньше и ещё оператор больше(нужно же в двух направлениях сортировать). Получилось так:
Неправильно получилось
1
0 / 0 / 0
Регистрация: 20.09.2019
Сообщений: 86
12.04.2020, 22:21  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Неправильно получилось
А как должно выглядеть правильно?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
12.04.2020, 22:24
Цитата Сообщение от _Beginner_ Посмотреть сообщение
А как должно выглядеть правильно?
Нужно воспользоваться std::tie
1
0 / 0 / 0
Регистрация: 20.09.2019
Сообщений: 86
12.04.2020, 22:36  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Нужно воспользоваться std::tie
Никогда этим не пользовался, поэтому довольно сложно в этом ориентироваться, но погуглив примерно такое написал:
C++
1
2
3
4
std::tuple<Abiturient&> Abiturient:: operator <(const Abiturient& e1)const
{
    
}
Не понимаю только как тело реализовать, надо tie использовать, но каким образом? И не знаю нужно ли писать перед Abiturient:: возвращаемый тип bool, даже если так, то подчёркивает
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
12.04.2020, 22:38
Цитата Сообщение от _Beginner_ Посмотреть сообщение
Не понимаю только как тело реализовать, надо tie использовать, но каким образом? И не знаю нужно ли писать перед Abiturient:: возвращаемый тип bool, даже если так, то подчёркивает
Там по ссылке вроде есть пример
1
0 / 0 / 0
Регистрация: 20.09.2019
Сообщений: 86
12.04.2020, 22:41  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Там по ссылке вроде есть пример
Да, но сам tie вызывается уже в main, сложно понять как нужно тело реализовать для сравнения атрибутов класса
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
13.04.2020, 10:03
Цитата Сообщение от _Beginner_ Посмотреть сообщение
Да, но сам tie вызывается уже в main, сложно понять как нужно тело реализовать для сравнения атрибутов класса
Нет, там пример структуры с оператором <
1
0 / 0 / 0
Регистрация: 20.09.2019
Сообщений: 86
13.04.2020, 14:23  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Нет, там пример структуры с оператором <
Я нашёл только объявление метода, что-то вроде:
C++
1
2
3
4
bool Abiturient:: operator <(const tuple<Abiturient>&e1)const
{
    return this->address < e1.address;
}
Но это, очевидно, не работает, потому что указывает, что e1 неполный допустимый тип, но как по-другому объявить я не понимаю

Добавлено через 3 часа 44 минуты
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Нет, там пример структуры с оператором <
Не знаю почему до этого не заметил (открывалась страница с tuple, а не с tie), ну да ладно, сделал так, но как мне это использовать для сортировки?
C++
1
2
3
4
5
6
7
8
9
10
11
bool Abiturient:: operator <(const Abiturient&e1)const
{
    return tie(this->number, this->surname, this->average, this->address, this->markMath, this->markRus, this->markPhys)
        < tie(e1.number, e1.surname, e1.average, e1.address, e1.markMath, e1.markRus, e1.markPhys);
}
 
bool Abiturient::operator >(const Abiturient& e1)const
{
    return tie(this->number, this->surname, this->average, this->address, this->markMath, this->markRus, this->markPhys)
        > tie(e1.number, e1.surname, e1.average, e1.address, e1.markMath, e1.markRus, e1.markPhys);
}
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
13.04.2020, 14:34
Лучший ответ Сообщение было отмечено _Beginner_ как решение

Решение

Цитата Сообщение от _Beginner_ Посмотреть сообщение
Не знаю почему до этого не заметил (открывалась страница с tuple, а не с tie), ну да ладно, сделал так, но как мне это использовать для сортировки?
C++
1
2
3
4
5
6
7
8
9
10
11
struct abiturients_less
{
    bool operator ()(const Abiturient *p1, const Abiturient *p2) const
    {
        return *p1 < *p2;
    }
};
 
class AbiturientSet : public  set<Abiturient*, abiturients_less>
{
................................
1
0 / 0 / 0
Регистрация: 20.09.2019
Сообщений: 86
13.04.2020, 15:00  [ТС]
Всё работает, спасибо Вам ещё раз за помощь!
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
13.04.2020, 15:14
Цитата Сообщение от _Beginner_ Посмотреть сообщение
Всё работает, спасибо Вам ещё раз за помощь!
Получился практически полный аналог class AbiturientSet : public set<Abiturient> - без звёздочки, указателя. Могут возникнуть вопросы - почему не сделал так.
0
0 / 0 / 0
Регистрация: 20.09.2019
Сообщений: 86
13.04.2020, 16:35  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Получился практически полный аналог class AbiturientSet : public set<Abiturient> - без звёздочки, указателя. Могут возникнуть вопросы - почему не сделал так.
Это ладно, там по сути так и должно быть, просто это задание уже работа с классом именно.
Я забыл, что ещё нужно реализовать выбор направления и поля сортировки, а как с помощью данного метода это реализовать?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
13.04.2020, 17:07
Цитата Сообщение от _Beginner_ Посмотреть сообщение
Я забыл, что ещё нужно реализовать выбор направления и поля сортировки, а как с помощью данного метода это реализовать?
Никак, только копировать всё в другой std::set
0
0 / 0 / 0
Регистрация: 20.09.2019
Сообщений: 86
14.04.2020, 09:41  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Никак, только копировать всё в другой std::set
И как это реализовать?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
14.04.2020, 13:03
Лучший ответ Сообщение было отмечено _Beginner_ как решение

Решение

Цитата Сообщение от _Beginner_ Посмотреть сообщение
И как это реализовать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
struct cmp_abiturients_by_name
{
    bool operator ()(const Abiturient *p1, const Abiturient *p2) const
    {
        return p1->surname < p2->surname;
    }
};
 
 
............................
 
AbiturientSet l;
............................
 
std::set<Abiturient *, cmp_abiturients_by_name> l2(l.begin(), l.end());
for (Abiturient *p: l2)
    std::cout << p;
1
0 / 0 / 0
Регистрация: 20.09.2019
Сообщений: 86
14.04.2020, 15:44  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
bool operator ()(const Abiturient *p1, const Abiturient *p2) const
    {
        return p1->surname < p2->surname;
    }
Только член класса подчёркивается, т.к он в private находится, если getSurname() вызвать, то ошибка тоже, хоть и другая
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.04.2020, 15:44

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

LinkedList составленный из объектов класса, как обратиться к полям объектов
Не могу сообразить как обратиться к полям объектов, добавленных в LinkedList. Суть такая: есть класс, имеющий 4 поля (разные типы - String...

Массив объектов базового класса, позволяющий работать с набором объектов — чтение, вывод
Расширить программы с классами. Каждый разработанный класс считать базовым; для каждого такого класса описать производный класс - массив...

Передача объектов дочерних классов через массив объектов родительского класса в функцию
Здравствуйте. Возможно, вопрос больше относится к теории ООП, но все же я не решился задавать его в теме теории ООП, так как он кажется мне...

Задайте списком множества Q^2, Q^3
Дано множество Q={h,квадрат(фигура нарисована)} Задайте списком множества Q^2, Q^3.


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru