goto inputA;}}
for (int i = 0; i < numA; i++) {
for (int j = 0; j < 33; j++) {
if (setA[i] == setUniversum[j]) {
setArrayBitA[j] = true;}}}
cout << "Введите количество элементов множества B: ";
cin >> numB;
cin.ignore();
char* setB = new char[numB + 1];
inputB:
cout << "Введите элементы множества B: ";
cin.getline(setB, numB + 1, '\n');
for (int i = 0; i < numB; i++) {
if (!isupper((unsigned char)setB[i])) {
cout << "Вы произвели неверный ввод символа. Повторите ввод!\n";
goto inputB;}}
for (int i = 0; i < numB; i++) {
for (int j = 0; j < 33; j++) {
if (setB[i] == setUniversum[j]) {
setArrayBitB[j] = true;}}}
cout << "Введите количество элементов множества C: ";
cin >> numC;
cin.ignore();
char* setC = new char[numC + 1];
inputC:
cout << "Введите элементы множества C: ";
cin.getline(setC, numC + 1, '\n');
for (int i = 0; i < numC; i++) {
if (!isupper((unsigned char)setC[i])) {
cout << "Вы произвели неверный ввод символа. Повторите ввод!\n";
goto inputC;}}
for (int i = 0; i < numC; i++) {
for (int j = 0; j < 33; j++) {
if (setC[i] == setUniversum[j]) {
setArrayBitC[j] = true;}}}
cout << "Введите количество элементов множества D: ";
cin >> numD;
cin.ignore();
char* setD = new char[numD + 1];
inputD:
cout << "Введите элементы множества D: ";
cin.getline(setD, numD + 1, '\n');
for (int i = 0; i < numD; i++) {
if (!isupper((unsigned char)setD[i])) {
cout << "Вы произвели неверный ввод символа. Повторите ввод!\n";
goto inputD;}}
for (int i = 0; i < numD; i++) {
for (int j = 0; j < 33; j++) {
if (setD[i] == setUniversum[j]) {
setArrayBitD[j] = true;}}}
cout << "\nМножество Е (двоичный вид): ";
auto start = chrono::steady_clock::now();
for (int i = 0; i < 33; i++) {
setArrayBitE[i] = (setArrayBitA[i] && (!(setArrayBitB[i] || setArrayBitC[i] || setArrayBitD[i])));}
auto stop = chrono::steady_clock::now();
auto second = chrono::duration_cast<chrono::nanoseconds>(stop - start);
for (int i = 0; i < 33; i++) {
cout << setArrayBitE[i];}
cout << "\nМножество Е (символьный вид): ";
for (int i = 0; i < 33; i++) {
if (setArrayBitE[i] == 1) {
setE[i] = setUniversum[i];
cout << setE[i];}}
cout << "\nВремя работы: " << second.count() << " наносекунд" << endl;}
if (choice == 4) {
long mwordA = 0;
long mwordB = 0;
long mwordC = 0;
long mwordD = 0;
long mwordEbinary = 0;
long mwordEtext = 0;
long tempmword = 0;
cout << "Введите количество элементов множества A: ";
cin >> numA;
cin.ignore();
char* setA = new char[numA + 1];
inputAmword:
cout << "Введите элементы множества A: ";
cin.getline(setA, numA + 1, '\n');
for (int i = 0; i < numA; i++) {
if (!isupper((unsigned char)setA[i])) {
cout << "Вы произвели неверный ввод символа. Повторите ввод!\n";
goto inputAmword;}}
for (int i = 0; i < numA; i++) {
for (int j = 0; j < 32; j++) {
if (setA[i] == setUniversum[j]) {
tempmword = 1 << j;
mwordA = mwordA | tempmword;}}}
cout << "Введите количество элементов множества B: ";
tempmword = 0;
cin >> numB;
cin.ignore();
char* setB = new char[numB + 1];
inputBmword:
cout << "Введите элементы множества B: ";
cin.getline(setB, numB + 1, '\n');
for (int i = 0; i < numB; i++) {
if (!isupper((unsigned char)setB[i])) {
cout << "Вы произвели неверный ввод символа. Повторите ввод!\n";
goto inputBmword;}}
for (int i = 0; i < numB; i++) {
for (int j = 0; j < 32; j++) {
if (setB[i] == setUniversum[j]) {
tempmword = 1 << j;
mwordB = mwordB | tempmword;}}}
cout << "Введите количество элементов множества C: ";
tempmword = 0;
cin >> numC;
cin.ignore();
char* setC = new char[numC + 1];
inputCmword:
cout << "Введите элементы множества C: ";
cin.getline(setC, numC + 1, '\n');
for (int i = 0; i < numC; i++) {
if (!isupper((unsigned char)setC[i])) {
cout << "Вы произвели неверный ввод символа. Повторите ввод!\n";
goto inputCmword;}}
for (int i = 0; i < numC; i++) {
for (int j = 0; j < 32; j++) {
if (setC[i] == setUniversum[j]) {
tempmword = 1 << j;
mwordC = mwordC | tempmword;}}}
cout << "Введите количество элементов множества D: ";
tempmword = 0;
cin >> numD;
cin.ignore();
char* setD = new char[numD + 1];
inputDmword:
cout << "Введите элементы множества D: ";
cin.getline(setD, numD + 1, '\n');
for (int i = 0; i < numD; i++) {
if (!isupper((unsigned char)setD[i])) {
cout << "Вы произвели неверный ввод символа. Повторите ввод!\n";
goto inputDmword;}}
for (int i = 0; i < numD; i++) {
for (int j = 0; j < 32; j++) {
if (setD[i] == setUniversum[j]) {
tempmword = 1 << j;
mwordD = mwordD | tempmword;}}}
auto start = chrono::steady_clock::now();
mwordEbinary = mwordB | mwordC | mwordD;
mwordEbinary = mwordEbinary;
mwordEbinary = mwordA & mwordEbinary;
auto stop = chrono::steady_clock::now();
mwordEtext = mwordEbinary;
auto second = chrono::duration_cast<chrono::nanoseconds>(stop - start);
cout << "\nМножество Е (символьный вид): ";
for (int i = 33; i > 0; i--) {
if (mwordEtext & 0x80000000) {
cout << setUniversum[i - 2];}
mwordEtext = mwordEtext << 1;}
cout << "\nМножество Е (двоичный вид): ";
for (int i = 0; i < 32; i++) {
if (mwordEbinary & 0x80000000) {
cout << "1";}
else {
cout << "0";}
mwordEbinary = mwordEbinary << 1;}
cout << "\nВремя работы: " << second.count() << " наносекунд" << endl;}
if (choice == 5) {
cout << "\nВведите количество элементов множества A: ";
cin >> numA;
cin.ignore();
char* setA = new char[numA + 1];
cout << "\nМножество А: ";
for (int i = 0; i < numA + 1; i++) {
int j = 0;
j = rand() % 33;
setA[i] = setUniversum[j];
cout << setA[i];
setA[i + 1] = NULL;}
cout << "\nВведите количество элементов множества B: ";
cin >> numB;
cin.ignore();
char* setB = new char[numB + 1];
cout << "\nМножество B: ";
for (int i = 0; i < numB + 1; i++) {
int j = 0;
j = rand() % 33;
setB[i] = setUniversum[j];
cout << setB[i];
setB[i + 1] = NULL;}
cout << "\nВведите количество элементов множества C: ";
cin >> numC;
cin.ignore();
char* setC = new char[numC + 1];
cout << "\nМножество C: ";
for (int i = 0; i < numC + 1; i++) {
int j = 0;
j = rand() % 33;
setC[i] = setUniversum[j];
cout << setC[i];
setC[i + 1] = NULL;}
cout << "\nВведите количество элементов множества D: ";
cin >> numD;
cin.ignore();
char* setD = new char[numD + 1];
cout << "\nМножество D: ";
for (int i = 0; i < numD + 1; i++) {
int j = 0;
j = rand() % 33;
setD[i] = setUniversum[j];
cout << setD[i];
setD[i + 1] = NULL;}
auto start = chrono::steady_clock::now();
char* setTemp = new char[numB + numC + numD + 1];
concatenationLetter(setTemp, setB, setC, setD);
char* setE = new char[numA + 2];
compareAndcopyLetter(setA, setTemp, setE);
auto stop = chrono::steady_clock::now();
auto second = chrono::duration_cast<chrono::nanoseconds>(stop - start);
cout << "\nВремя работы: " << second.count() << " наносекунд" << endl;
cout << "Множество Е: " << setE;}
if (choice == 6) {
srand(time(NULL));
ListSet* beginA = NULL;
ListSet* endA = NULL;
ListSet* beginB = NULL;
ListSet* endB = NULL;
ListSet* beginC = NULL;
ListSet* endC = NULL;
ListSet* beginD = NULL;
ListSet* endD = NULL;
ListSet* beginE = NULL;
ListSet* endE = NULL;
cout << "Введите количество элементов нового множества: ";
cin >> numA;
cin.ignore();
beginA = new ListSet;
int j = 0;
j = rand() % 33;
beginA->Set.element = setUniversum[j];
beginA->next = NULL;
endA = beginA;
for (int i = 1; i < numA; i++) {
endA->next = new ListSet;
endA = endA->next;
int j = 0;
j = rand() % 33;
endA->Set.element = setUniversum[j];
endA->next = NULL;}
cout << "Введите количество элементов нового множества: ";
cin >> numB;
cin.ignore();
beginB = new ListSet;
j = 0;
j = rand() % 33;
beginB->Set.element = setUniversum[j];
beginB->next = NULL;
endB = beginB;
for (int i = 1; i < numB; i++) {
endB->next = new ListSet;
endB = endB->next;
int j = 0;
j = rand() % 33;
endB->Set.element = setUniversum[j];
endB->next = NULL;}
cout << "Введите количество элементов нового множества: ";
cin >> numC;
cin.ignore();
beginC = new ListSet;
j = 0;
j = rand() % 33;
beginC->Set.element = setUniversum[j];
beginC->next = NULL;
endC = beginC;
for (int i = 1; i < numC; i++) {
endC->next = new ListSet;
endC = endC->next;
int j = 0;
j = rand() % 33;
endC->Set.element = setUniversum[j];
endC->next = NULL;}
cout << "Введите количество элементов нового множества: ";
cin >> numD;
cin.ignore();
beginD = new ListSet;
j = 0;
j = rand() % 33;
beginD->Set.element = setUniversum[j];
beginD->next = NULL;
endD = beginD;
for (int i = 1; i < numD; i++) {
endD->next = new ListSet;
endD = endD->next;
int j = 0;
j = rand() % 33;
endD->Set.element = setUniversum[j];
endD->next = NULL;}
auto start = chrono::steady_clock::now();
int i = 0;
ListSet* tempA = new ListSet;
tempA = beginA;
cout << "\nМножество A: ";
while (beginA != NULL) {
cout << beginA->Set.element;
beginA = beginA->next;}
beginA = tempA;
ListSet* tempB = new ListSet;
tempB = beginB;
cout << "\nМножество В: ";
while (beginB != NULL) {
cout << beginB->Set.element;
beginB = beginB->next;}
beginB = tempB;
while (beginA != NULL) {
while (beginB != NULL) {
if (beginB->Set.element == beginA->Set.element) {
beginA->Set.element = '8';}
beginB = beginB->next;}
beginA = beginA->next;
beginB = tempB;}
beginA = tempA;
ListSet* tempC = new ListSet;
tempC = beginC;
cout << "\nМножество C: ";
while (beginC != NULL) {
cout << beginC->Set.element;
beginC = beginC->next;}
beginC = tempC;
while (beginA != NULL) {
while (beginC != NULL) {
if (beginC->Set.element == beginA->Set.element) {
beginA->Set.element = '8';}
beginC = beginC->next;}
beginA = beginA->next;
beginC = tempC;}
beginA = tempA;
ListSet* tempD = new ListSet;
tempD = beginD;
cout << "\nМножество D: ";
while (beginD != NULL) {
cout << beginD->Set.element;
beginD = beginD->next;}
beginD = tempD;
while (beginA != NULL) {
while (beginD != NULL) {
if (beginD->Set.element == beginA->Set.element) {
beginA->Set.element = '8';}
beginD = beginD->next;}
beginA = beginA->next;
beginD = tempD;}
beginA = tempA;
beginD = tempD;
int count = 0;
while (beginA != NULL) {
if (beginA->Set.element != '8') {
beginD->Set.element = beginA->Set.element;
count++;
beginD = beginD->next;}
beginA = beginA->next;}
beginD = tempD;
cout << "\nМножество Е: ";
auto stop = chrono::steady_clock::now();
auto second = chrono::duration_cast<chrono::nanoseconds>(stop - start);
while (count != 0) {
cout << beginD->Set.element;
beginD = beginD->next;
count--;}
cout << "\nВремя работы: " << second.count() << " наносекунд" << endl;}
if (choice == 7) {
srand(time(NULL));
int setArrayBitAAuto[33];
int setArrayBitBAuto[33];
int setArrayBitCAuto[33];
int setArrayBitDAuto[33];
int setArrayBitEAuto[33];
for (int i = 0; i < 33; i++) {
setArrayBitAAuto[i] = false;
setArrayBitBAuto[i] = false;
setArrayBitCAuto[i] = false;
setArrayBitDAuto[i] = false;
setArrayBitEAuto[i] = 0;}
cout << "Введите количество элементов множества A: ";
cin >> numA;
cin.ignore();
char* setA = new char[numA + 1];
int j = 0;
for (int i = 0; i < numA; i++) {
j = rand() % 33;
setA[i] = setUniversum[j];
setA[i + 1] = '\n';}
for (int i = 0; i < numA; i++) {
for (int j = 0; j < 33; j++) {
if (setA[i] == setUniversum[j]) {
setArrayBitAAuto[j] = true;}}}
cout << endl;
for (int i = 0; i < numA; i++) {
cout << setA[i];}
cout << "\nВведите количество элементов множества B: ";
cin >> numB;
cin.ignore();
char* setB = new char[numB + 1];
j = 0;
for (int i = 0; i < numB; i++) {
j = rand() % 33;
setB[i] = setUniversum[j];
setB[i + 1] = '\n';}
for (int i = 0; i < numB; i++) {
for (int j = 0; j < 33; j++) {
if (setB[i] == setUniversum[j]) {
setArrayBitBAuto[j] = true;}}}
cout << endl;
for (int i = 0; i < numB; i++) {
cout << setB[i];}
cout << "\nВведите количество элементов множества C: ";
cin >> numC;
cin.ignore();
char* setC = new char[numC + 1];
j = 0;
for (int i = 0; i < numC; i++) {
j = rand() % 33;
setC[i] = setUniversum[j];
setC[i + 1] = '\n';}
for (int i = 0; i < numC; i++) {
for (int j = 0; j < 33; j++) {
if (setC[i] == setUniversum[j]) {
setArrayBitCAuto[j] = true;}}}
cout << endl;
for (int i = 0; i < numC; i++) {
cout << setC[i];}
cout << endl; cout << "Введите количество элементов множества D: ";
cin >> numD;
cin.ignore();
char* setD = new char[numD + 1];
j = 0;
for (int i = 0; i < numD; i++) {
j = rand() % 33;
setD[i] = setUniversum[j];
setD[i + 1] = '\n';}
for (int i = 0; i < numD; i++) {
for (int j = 0; j < 33; j++) {
if (setD[i] == setUniversum[j]) {
setArrayBitDAuto[j] = true;}}}
cout << endl;
for (int i = 0; i < numD; i++) {
cout << setD[i];}
cout << endl;
char setE[33];
for (int i = 0; i < 33; i++) {
setE[i] = '\n'; }
cout << endl;
auto start = chrono::steady_clock::now();
for (int i = 0; i < 33; i++) {
setArrayBitEAuto[i] = (setArrayBitAAuto[i] && (!(setArrayBitBAuto[i] || setArrayBitCAuto[i] || setArrayBitDAuto[i])));}
auto stop = chrono::steady_clock::now();
auto second = chrono::duration_cast<chrono::nanoseconds>(stop - start);
cout << "Время работы: " << second.count() << " наносекунд" << endl;
cout << "Множество Е: ";
for (int i = 0; i < 33; i++) {
if (setArrayBitEAuto[i] == 1) {
setE[i] = setUniversum[i];
cout << setE[i];}}} if (choice == 8) {
srand(time(NULL));
long mwordA = 0;long mwordB = 0;long mwordC = 0;long mwordD = 0;
long mwordEbinary = 0;
long mwordEtext = 0;
long tempmword = 0;
cout << "Введите количество элементов множества A: ";
cin >> numA;
cin.ignore();
char* setA = new char[numA + 1];
int j = 0;
for (int i = 0; i < numA; i++) {
j = rand() % 33;
setA[i] = setUniversum[j];}
for (int i = 0; i < numA; i++) {
cout << setA[i];}
cout << endl;
for (int i = 0; i < numA; i++) {
for (int j = 0; j < 32; j++) {
if (setA[i] == setUniversum[j]) {
tempmword = 1 << j;
mwordA = mwordA | tempmword;}}}
cout << "Введите количество элементов множества B: ";
tempmword = 0;
cin >> numB;
cin.ignore();
char* setB = new char[numB + 1];
j = 0;
for (int i = 0; i < numB; i++) {
j = rand() % 33;
setB[i] = setUniversum[j];}
for (int i = 0; i < numB; i++) {
cout << setB[i];}
cout << endl;
for (int i = 0; i < numB; i++) {
for (int j = 0; j < 32; j++) {
if (setB[i] == setUniversum[j]) {
tempmword = 1 << j;
mwordB = mwordB | tempmword;}}}
cout << "Введите количество элементов множества C: ";
tempmword = 0;
cin >> numC;
cin.ignore();
char* setC = new char[numC + 1];
j = 0;
for (int i = 0; i < numC; i++) {
j = rand() % 33;
setC[i] = setUniversum[j];}
for (int i = 0; i < numC; i++) {
cout << setC[i];}
cout << endl;
for (int i = 0; i < numC; i++) {
for (int j = 0; j < 32; j++) {
if (setC[i] == setUniversum[j]) {
tempmword = 1 << j;
mwordC = mwordC | tempmword;}}}
cout << "Введите количество элементов множества D: ";
tempmword = 0;
cin >> numD;
cin.ignore();
char* setD = new char[numD + 1];
j = 0;
for (int i = 0; i < numD; i++) {
j = rand() % 33;
setD[i] = setUniversum[j];}
for (int i = 0; i < numD; i++) {
cout << setD[i];}
cout << endl;
for (int i = 0; i < numD; i++) {
for (int j = 0; j < 32; j++) {
if (setD[i] == setUniversum[j]) {
tempmword = 1 << j;
mwordD = mwordD | tempmword;}}}
auto start = chrono::steady_clock::now();
mwordEbinary = mwordB | mwordC | mwordD;
mwordEbinary = mwordEbinary;
mwordEbinary = mwordA & mwordEbinary;
auto stop = chrono::steady_clock::now();
auto second = chrono::duration_cast<chrono::nanoseconds>(stop - start);
mwordEtext = mwordEbinary;
cout << "\nМножество Е (символьное представление): ";
for (int i = 33; i > 0; i--) {
if (mwordEtext & 0x80000000) {
cout << setUniversum[i - 2];}
mwordEtext = mwordEtext << 1;}
cout << "\nМножество Е (двоичное представление): ";
for (int i = 0; i < 32; i++) {
if (mwordEbinary & 0x80000000) {
cout << "1";}
else {
cout << "0";}
mwordEbinary = mwordEbinary << 1;}
cout << endl;
cout << "Время работы: " << second.count() << " наносекунд" << endl;}}
void ShowSet(ListSet* begin) {
cout << "Множество: ";
while (begin != NULL) {
cout << begin->Set.element;
begin = begin->next;}
cout << endl;}
void CreateSet(ListSet** begin) {
cout << "Введите количество элементов нового множества: ";
cin >> numA;
cin.ignore();
*begin = new ListSet;
cout << "Введите элемент множества :";
cin >> (*begin)->Set.element;
(*begin)->next = NULL;
ListSet* end = *begin;
for (int i = 1; i < numA; i++) {
end->next = new ListSet;
end = end->next;
cout << "Введите элемент множества : ";
cin >> end->Set.element;
end->next = NULL;}}
void compareString(char* setInput, int num) {
for (int i = 0; i < num; i++) {
if (!isupper((unsigned char)setInput[i])) {
cout << "Вы произвели неверный ввод символа. Повторите ввод!\n";
break;}}}
void inputLetter(int amount, char* setLetter) {
int i = 0;
for (; i < amount; i++) {
cout << "Введите прописную букву: " << endl;
cin >> setLetter[i];
setLetter[i + 1] = NULL;
cin.clear();
cin.ignore();
if (!isupper((unsigned char)setLetter[i])) {
cin.ignore();
cin.clear();
i--;}}}
void concatenationLetter(char* setSum, char* setLetter_1, char* setLetter_2, char* setLetter_3) {
strcpy(setSum, setLetter_1);
strcat(setSum, setLetter_2);
strcat(setSum, setLetter_3);}
void compareAndcopyLetter(char* setLetterA, char* setLetterTemp, char* setLetterE) {
int i = 0;
char* temp;
for (int j = 0; j < strlen(setLetterA); j++) {
temp = strrchr(setLetterTemp, setLetterA[j]);
if (temp == NULL) {
setLetterE[i] = setLetterA[j];
setLetterE[i + 1] = NULL;
i++;}}} |