#include #include #include #include using namespace std; struct elem // Структура - элемент множества { int evNumb; int nonEvNum; int regNumb; char letter; }; struct elem_compare { bool operator()(const elem& a, const elem& b) const { if (a.evNumb != b.evNumb) return a.evNumb < b.evNumb; if (a.nonEvNum != b.nonEvNum) return a.nonEvNum < b.nonEvNum; if (a.regNumb != b.regNumb) return a.regNumb < b.regNumb; return a.letter < b.letter; } }; void make_unique(vector& mass) { set unique_set(mass.begin(), mass.end()); mass.assign(unique_set.begin(), unique_set.end()); } void printArray(const vector& mass) { for (int i = 0; i < mass.size(); ++i) { cout << i+1 <<" element" << ": " << mass[i].evNumb << " " << mass[i].nonEvNum << " " << mass[i].regNumb << " " << mass[i].letter << endl; } cout<= '0' && str[0] <= '9') && ((str[0] - '0') % 2 == 0) && // Чётная цифра (str[1] >= '0' && str[1] <= '9') && ((str[1] - '0') % 2 == 1) && // Нечётная цифра (str[2] >= '0' && str[2] <= '9') && // цифра (str[3] >= 'a' && str[3] <= 'z'); // буква } void push_to_array(vector& mass, const string& input) { elem El; El.evNumb = input[0] - '0'; El.nonEvNum = input[1] - '0'; El.regNumb = input[2] - '0'; El.letter = input[3]; mass.push_back(El); } void input_array(vector& mass, int size) { for (int i = 0; i < size; ++i) { cout << "Input in ijcb format for " << i+1 << " element: "; string input; cin >> input; if (validate_input(input)) { push_to_array(mass, input); } else { cout << "Input error" << endl; i--; } } } vector set_union(const vector& A, const vector& B) // Объединение { set result(A.begin(), A.end()); result.insert(B.begin(), B.end()); return vector(result.begin(), result.end()); } vector set_intersection(const vector& A, const vector& B) // Пересечение { vector result; set setB(B.begin(), B.end()); for (const auto& item : A) // Пробегаемся по А { if (setB.find(item) != setB.end()) // Сравниваем с B { result.push_back(item); } } return result; } vector set_difference(const vector& A, const vector& B) // Дополнение { vector result; set setB(B.begin(), B.end()); for (const auto& item : A) { if (setB.find(item) == setB.end()) { result.push_back(item); } } return result; } vector set_symmetric_diff(const vector& A, const vector& B) // Симметричная разность { vector diffAB = set_difference(A, B); vector diffBA = set_difference(B, A); return set_union(diffAB, diffBA); } int main() { int mass1Size, mass2Size; vector mass1, mass2; cout << "Enter size of first array: "; cin >> mass1Size; input_array(mass1, mass1Size); printArray(mass1); cout << "Enter size of second array: "; cin >> mass2Size; input_array(mass2, mass2Size); printArray(mass2); make_unique(mass1); make_unique(mass2); cout<<"Cleared masses are:"<