Минимальные нормальные формы для искомых множеств. Вывод подмножества с учетом размера, страница 2

//Генерация всех разбиений множества. Шестернин ИВБ-4-12

#include <iostream>

using std::cin;

using std::cout;

//a - исходное множество

//b - разбиение

void PrintPartition(int size, int *a, int* b)

{

//Вычисляем количество подмножеств в данном разбиении

int parts=1;

for(int i=0;i<size;i++)

if(b[i]>parts)

parts=b[i];

//Выводим каждое подмножество

for(int i=0;i<parts;i++)

{

for(int j=0;j<size;j++)

if(b[j]==i+1)

cout << a[j] << ' ';

if(i!=parts-1)

cout << "& ";

}

cout << '\n';

}

//а - исходное множество

//size - размер множества

void CreatePartition(int position, int max, int size, int *a, int *b)

{

//Если достигнут конец массива, то вывести разбиение

if(position>=size)

{

PrintPartition(size,a,b);

return;

}

//Цикл по всем возможным вариантам для данной позиции массива

for(int i=0;i<max;i++)

{

b[position]=i+1;

//Переход к следующему элементу массива при этом, если номер элемента достиг максимума, то максимум щего номера увеличивается на 1

if(i+1==max)

CreatePartition(position+1,max+1,size,a,b);

else

CreatePartition(position+1,max,size,a,b);

}

}

int main()

{

//Ввод размера множества

int n;

cin >> n;

if(n<=0)

return 0;

//Ввод множества

int *A = new int[n];

for(int i=0;i<n;i++)

cin >> A[i];

cout << '\n';

int *B = new int[n];

//Генерация разбиений

//Начальное значение: нулевой элемент массива, максимальный индекс - 1

CreatePartition(0,1,n,A,B);

delete[] A;

delete[] B;

return 0;

}


// Генерация перестановок множества. Шестернин ИВБ-4-12

#include <iostream>

using std::cin;

using std::cout;

//Множество

int* A;

//Размер множества

int size;

//Вывод множества

void Output()

{

for(int i=0;i<size;i++)

cout<<A[i]<<" ";

cout<<"\n";

}

//Функция перемены мест элементов

void Swap(int i,int j)

{

int temp = A[i];

A[i] = A[j];

A[j] = temp;

}

//Функция генерации следующей перестановки

void Create(int k)

{

//Вывод множества

if (k==size)

{

Output();

}

else

{

//Продолжение генерации

for(int j=k;j<size;j++)

{

Swap(k,j);

Create(k+1);

Swap(k,j);

}

}

}

int main()

{

//Ввод размера множества

std::cout<<"Size: ";

std::cin>>size;

//Ввод множества

std::cout<<"Set: ";

A = new int[size];

for(int i = 0;i<size;i++)

cin >> A[i];

Create(0);

delete[] A;

return 0;

}

№3 Добавить сущности (от 1 до 3) к двум заданным в таблице сущностям. Создать ER-модель предметной области. По ER-модели предметной области построить схему реляционной базы данных.

Сущности: Повар, блюда, ресторан, ингредиенты, зарплата

a)                                                        b)


c)                                                        d)


e)