Добавил:
vvrstcnho
Рад, если кому-то помог
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы С++ (для ИВТ) / Готовые лабы С++ / Лаба3 / Laba 3 (9)
.cpp#include <iostream>
#include <vector>
#include <algorithm>
#include <windows.h>
using namespace std;
class IntSet {
private:
vector<int> elements;
void removeDuplicates() {
sort(elements.begin(), elements.end());
elements.erase(unique(elements.begin(), elements.end()), elements.end());
}
public:
IntSet(const vector<int>& elems = {}) : elements(elems) {
removeDuplicates();
}
// Объединение множеств (+)
IntSet operator+(const IntSet& other) const {
vector<int> result = elements;
result.insert(result.end(), other.elements.begin(), other.elements.end());
return IntSet(result);
}
// Пересечение множеств (&)
IntSet operator&(const IntSet& other) const {
vector<int> result;
for (int elem : elements) {
if (find(other.elements.begin(), other.elements.end(), elem) != other.elements.end()) {
result.push_back(elem);
}
}
return IntSet(result);
}
// Разность множеств (-)
IntSet operator-(const IntSet& other) const {
vector<int> result;
for (int elem : elements) {
if (find(other.elements.begin(), other.elements.end(), elem) == other.elements.end()) {
result.push_back(elem);
}
}
return IntSet(result);
}
// Добавление элемента
void add(int elem) {
if (find(elements.begin(), elements.end(), elem) == elements.end()) {
elements.push_back(elem);
removeDuplicates();
}
}
// Удаление элемента
void remove(int elem) {
auto it = find(elements.begin(), elements.end(), elem);
if (it != elements.end()) {
elements.erase(it);
}
}
void print() const {
cout << "{";
for (int i = 0; i < elements.size(); i++) {
cout << elements[i];
if (i < elements.size() - 1) cout << ", ";
}
cout << "}" << endl;
}
friend ostream& operator<<(ostream& os, const IntSet& s);
};
ostream& operator<<(ostream& os, const IntSet& s) {
os << "{";
for (int i = 0; i < s.elements.size(); i++) {
os << s.elements[i];
if (i < s.elements.size() - 1) os << ", ";
}
os << "}";
return os;
}
int main() {
SetConsoleOutputCP(65001);
cout << "=== Задача 3.9 - Множество целых чисел ===" << endl;
IntSet s1({1, 2, 3, 4, 5});
IntSet s2({4, 5, 6, 7, 8});
cout << "Множество s1: " << s1 << endl;
cout << "Множество s2: " << s2 << endl;
IntSet unionSet = s1 + s2;
cout << "s1 + s2 (объединение): " << unionSet << endl;
IntSet intersection = s1 & s2;
cout << "s1 & s2 (пересечение): " << intersection << endl;
IntSet difference = s1 - s2;
cout << "s1 - s2 (разность): " << difference << endl;
s1.add(10);
cout << "s1 после добавления 10: " << s1 << endl;
s1.remove(3);
cout << "s1 после удаления 3: " << s1 << endl;
return 0;
}
Соседние файлы в папке Лаба3
