Скачиваний:
15
Добавлен:
16.07.2022
Размер:
39.31 Кб
Скачать

Код программы

//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;

}

Соседние файлы в папке Лабы для негра