Помогите пожалуйста решить практику:
Заданы два множества точек на плоскости. Построить пересечение и разность этих множеств.
C/C++
Программирование C++, 1 курс, практика
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <random>
#include <set>
using namespace std;
struct Point {
int x;
int y;
private:
friend bool operator<(const Point& a, const Point& b) {
return a.x < b.x || a.x == b.x && a.y < b.y;
}
friend ostream& operator<<(ostream& out, const Point& p) {
out << setw(4) << p.x << setw(4) << p.y;
return out;
}
};
int main() {
uniform_int_distribution<> uid(-5, 5);
mt19937 gen{ random_device()() };
auto rand = [&] { return uid(gen); };
const auto length = 25U;
set<Point> set_a;
set<Point> set_b;
for (auto i = 0U; i < length; ++i) {
set_a.emplace(Point{ rand(), rand() });
set_b.emplace(Point{ rand(), rand() });
}
puts("Set A:");
for (const auto& point : set_a) cout << point << '\n';
puts("Set B:");
for (const auto& point : set_b) cout << point << '\n';
set<Point> set_i;
set_intersection(set_a.begin(), set_a.end(), set_b.begin(), set_b.end(), inserter(set_i, set_i.end()));
puts("Set intersection:");
for (const auto& point : set_i) cout << point << '\n';
set<Point> set_d;
set_difference(set_a.begin(), set_a.end(), set_b.begin(), set_b.end(), inserter(set_d, set_d.end()));
puts("Set difference:");
for (const auto& point : set_d) cout << point << '\n';
}
#include <iostream>
#include <iomanip>
#include <random>
#include <set>
using namespace std;
struct Point {
int x;
int y;
private:
friend bool operator<(const Point& a, const Point& b) {
return a.x < b.x || a.x == b.x && a.y < b.y;
}
friend ostream& operator<<(ostream& out, const Point& p) {
out << setw(4) << p.x << setw(4) << p.y;
return out;
}
};
int main() {
uniform_int_distribution<> uid(-5, 5);
mt19937 gen{ random_device()() };
auto rand = [&] { return uid(gen); };
const auto length = 25U;
set<Point> set_a;
set<Point> set_b;
for (auto i = 0U; i < length; ++i) {
set_a.emplace(Point{ rand(), rand() });
set_b.emplace(Point{ rand(), rand() });
}
puts("Set A:");
for (const auto& point : set_a) cout << point << '\n';
puts("Set B:");
for (const auto& point : set_b) cout << point << '\n';
set<Point> set_i;
set_intersection(set_a.begin(), set_a.end(), set_b.begin(), set_b.end(), inserter(set_i, set_i.end()));
puts("Set intersection:");
for (const auto& point : set_i) cout << point << '\n';
set<Point> set_d;
set_difference(set_a.begin(), set_a.end(), set_b.begin(), set_b.end(), inserter(set_d, set_d.end()));
puts("Set difference:");
for (const auto& point : set_d) cout << point << '\n';
}
https://www.cplusplus.com/reference/algorithm/set_intersection/
Воспользуйтесь алгоритмом стандартной библиотеки set_intersection.
Заодно учтите, что есть такие операции как set_union, set_difference, set_symmetric_difference
А я спать...или ты думал, что я за тебя делать буду?
Воспользуйтесь алгоритмом стандартной библиотеки set_intersection.
Заодно учтите, что есть такие операции как set_union, set_difference, set_symmetric_difference
А я спать...или ты думал, что я за тебя делать буду?
Ырысбек Максатов
так и думал
Похожие вопросы
- Надо написать код на языке C 1 курс
- Помогите с заданием по программированию, С++, напишите код для 1 курса
- Задача по программированию C++
- Программирование C++ ПРОШУ ПОМОЧЬ!
- Что такое #include <iostream>, std using namespace std В языке программирования C++?
- Контрольная по алгоритмизации и программированию! C++
- Язык программирования c++
- Нормальный ли язык программирования C для новичка ,что бы в дальнейшем перейти на C# ,C++,И в чем различие между ними?
- Основы программирования C++
- Программирование c++ программирование и работа со структурами