Код программы
//10 вар
/*
Строчные латинские буквы
Множество, содержащее буквы, имеющиеся в любом из множеств A или B, но отсутсвующие в C, кроме того, обязательно встречающиеся
также и в D
((A + B) - C) * D
*/
#include <iostream>
#include <clocale>
#include <stdlib.h>
#include <stdio.h>
#include <Windows.h>
#include <ctime>
#include <conio.h>
using namespace std;
int main()
{
setlocale(LC_CTYPE, "rus");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
const int sizeb = 26;
system("CLS");
char ch;
char U[] = { 'a','b','c','d','e','f','g','h','i','g','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' };
//bitset<sizeb> A;
long int A = 0;
long int B = 0;
long int C = 0;
long int D = 0;
long int E = 0;
long int F = 0;
long int G = 0;
system("CLS");
int c = 0;
#pragma region A
cout << "Введите количество элементов множества A" << endl;
cin >> c;
for (int i = 0; i < c; i++)
{
cout << "Введите элемент № " << i + 1 << " множества A строчной буквой латинского алфавита" << endl;
fflush(stdin);
ch = _getch();
if (!((int)ch >= (int)'a' && (int)ch <= (int)'z'))
{
cout << "!!!Строка содержит цифру или другой неподходящий символ!!!\n";
i--;
}
else
A |= 1 << ((int)ch - (int)'a');
}
cout << "Вы ввели множество А: " << endl; //Вывод множества на экран
for (int i = 0; i < sizeb; i++)
if ((A >> i) & 1 == 1) cout << U[i];
cout << endl;
cout << "отображение на универсум А: " << endl; //Вывод множества на экран
for (int i = 0; i <= sizeb; i++)
std::cout << ((A >> i) & 1);
cout << endl;
#pragma endregion A
#pragma region B
cout << "Введите количество элементов множества B" << endl;
cin >> c;
for (int i = 0; i < c; i++)
{
cout << "Введите элемент № " << i + 1 << " множества B строчной буквой латинского алфавита" << endl;
fflush(stdin);
ch = _getch();
if (!((int)ch >= (int)'a' && (int)ch <= (int)'z'))
{
cout << "!!!Строка содержит цифру или другой неподходящий символ!!!\n";
i--;
}
else
B |= 1 << ((int)ch - (int)'a');
}
cout << "Вы ввели множество B: " << endl; //Вывод множества на экран
for (int i = 0; i < sizeb; i++)
if ((B >> i) & 1 == 1) cout << U[i];
cout << endl;
cout << "отображение на универсум B: " << endl; //Вывод множества на экран
for (int i = 0; i <= sizeb; i++)
std::cout << ((B >> i) & 1);
cout << endl;
#pragma endregion B
#pragma region C
cout << "Введите количество элементов множества C" << endl;
cin >> c;
for (int i = 0; i < c; i++)
{
cout << "Введите элемент № " << i + 1 << " множества C строчной буквой латинского алфавита" << endl;
fflush(stdin);
ch = _getch();
if (!((int)ch >= (int)'a' && (int)ch <= (int)'z'))
{
cout << "!!!Строка содержит цифру или другой неподходящий символ!!!\n";
i--;
}
else
{
C |= 1 << ((int)ch - (int)'a');
}
}
cout << "Вы ввели множество C: " << endl; //Вывод множества на экран
for (int i = 0; i < sizeb; i++)
if ((C >> i) & 1 == 1) cout << U[i];
cout << endl;
cout << "отображение на универсум C: " << endl; //Вывод множества на экран
for (int i = 0; i <= sizeb; i++)
std::cout << ((C >> i) & 1);
cout << endl;
#pragma endregion C
#pragma region D
cout << "Введите количество элементов множества D" << endl;
cin >> c;
for (int i = 0; i < c; i++)
{
cout << "Введите элемент № " << i + 1 << " множества D строчной буквой латинского алфавита" << endl;
fflush(stdin);
ch = _getch();
if (!((int)ch >= (int)'a' && (int)ch <= (int)'z'))
{
cout << "!!!Строка содержит цифру или другой неподходящий символ!!!\n";
i--;
}
else
{
D |= 1 << ((int)ch - (int)'a');
}
}
cout << "Вы ввели множество D: " << endl; //Вывод множества на экран
for (int i = 0; i < sizeb; i++)
if ((D >> i) & 1 == 1) cout << U[i];
cout << endl;
cout << "отображение на универсум D: " << endl; //Вывод множества на экран
for (int i = 0; i <= sizeb; i++)
std::cout << ((D >> i) & 1);
cout << endl;
#pragma endregion D
clock_t timeCheck = clock();
E = A | B;
F = E & (~C);
G = F & D;
timeCheck = clock() - timeCheck;
cout << "Обработка ((A + B) - C) * D с использованием отображения на Универсум заняла " << timeCheck / (double)CLOCKS_PER_SEC << "сек" << endl;
cout << "Отображение E = A | B: " << endl; //Вывод множества на экран
for (int i = 0; i < sizeb; i++)
if ((E >> i) & 1 == 1) cout << U[i];
cout << endl;
cout << "Отображение на универсум E: " << endl; //Вывод множества на экран
for (int i = 0; i <= sizeb; i++)
std::cout << ((E >> i) & 1);
cout << endl;
cout << "Отображение F = E / C: " << endl; //Вывод множества на экран
for (int i = 0; i < sizeb; i++)
if ((F >> i) & 1 == 1) cout << U[i];
cout << endl;
cout << "Отображение на универсум F: " << endl; //Вывод множества на экран
for (int i = 0; i <= sizeb; i++)
std::cout << ((F >> i) & 1);
cout << endl;
cout << "Отображение G = F & D: " << endl; //Вывод множества на экран
for (int i = 0; i < sizeb; i++)
if ((G >> i) & 1 == 1) cout << U[i];
cout << endl;
cout << "Отображение на универсум G: " << endl; //Вывод множества на экран
for (int i = 0; i <= sizeb; i++)
std::cout << ((G >> i) & 1);
cout << endl;
system("pause");
return 0;
}