From c3594fef10a0f85d0a1d241960f7a352f08edcc2 Mon Sep 17 00:00:00 2001 From: anqude Date: Fri, 23 May 2025 12:16:16 +0000 Subject: [PATCH] add 1 file --- main.c | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 main.c diff --git a/main.c b/main.c new file mode 100644 index 0000000..773c50e --- /dev/null +++ b/main.c @@ -0,0 +1,176 @@ +#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:"<