Міністерство науки і освіти України
Національний університет “Львівська політехніка”
Інститут комп’ютерних наук та інформаційних технологій
кафедра програмного забезпечення
Звіт з лабораторної роботи №1
з дисципліни “Дискретні структури ”
Львів 2008
Тема.Операції над множинами. Комп’ютерне подання множин.
Мета. Навчитись працювати з множинами.
Завдання:
1. Описати 3 числові масиви A (5 елементів), B (3 елементи), C (7 елементів)
2. Ввести з клавіатури три масиви A, B, C.
3. Здійснити задані перетворення над масивами і видати результат.
Знайти у масиві A суму всіх елементів.
ІІ. Здійснити перетворення над масивами (A∩B)\(AUC).
III. Записати декартовий добуток AxC, CxA.
Текс програми
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
void dekart (int* A, int * B, int sizeA, int sizeB);
bool dig_ex(int* array,int x, int size);
main()
{
int A[5]={1,2,3,4,5},B[3]={0,1,2},C[7]={1,2,3,4,5,6,7};
printf("Vvedit masuviv\n\n");
printf("Vvedit masuv A\n");
for (int i=0; i<5; i++)
{
cin>>A[i];
}
printf("Vvedit masuv B\n");
for (int j=0; j<3; j++)
{
cin>>B[j];
}
printf("Vvedit masuv C\n");
for (int o=0; o<7; o++)
{
cin>>C[o];
}
int sum=0;
int P1pos=0, P2pos=0, Ppos=0;
for ( int i=0; i<5; i++)
{
sum= sum+A[i];
}
printf ("Suma elementiv A =%i\n" , sum);
// peretvorennya
int P[15], P1[5], P2[20];
//////A & B
for( int i=0;i<3;++i)
for (int g=0; g<5; g++)
{
if(A[g]==B[i])
if(!dig_ex(P1, A[g], P1pos))
P1[P1pos++]=A[g];
}
printf("A&B= ");
if(P1pos==0)
printf("Pusta mnozhyna");
for ( int i=0; i<P1pos; i++)
{
printf("%i ", P1[i]);
}
///////A V C////////
for( int i=0;i<7;++i)
{
if(!dig_ex(P2, C[i], P2pos))
P2[P2pos++]=C[i];
}
for ( int i=0; i<5; i++)
{
if(!dig_ex(P2, A[i], P2pos))
P2[P2pos++]=A[i];
}
printf("\nA V C= ");
if(P2pos==0)
cout<<"Pusta mnozhyna";
for ( int i=0; i<P2pos; i++)
{
printf("%i ", P2[i]);
}
///////////////(A&B)/(A V B)//////
int j=0;
for (int g=0; g<5; g++)
{
if(!dig_ex(P2,P1[g],sizeof(P2)))
if(!dig_ex(P, P1[g], j))
P[Ppos++]=P1[g];
}
printf("\n(A&B)/(AVC)= ");
if(Ppos==0)
printf("Pusta mnozhyna ");
for ( int i=0; i<Ppos; i++)
{
printf("%i ", P[i]);
}
printf("\nAxC");
dekart(A,C,5,7);
printf("\nCxA");
dekart(C,A,7,5);
}
bool dig_ex(int* array,int x, int size)
{
for(int i=0;i<size;++i)
if(array[i]==x)
return true;
return false;
}
void dekart (int* A, int * B, int sizeA, int sizeB)
{
int c=0;
printf("{");
for(int i=0;i<sizeA;++i)
{
for(int j=0; j<sizeB;++j)
{
if(!(c++%4) && c!=0)
printf("\n");
printf(" ( %i, %i) ", A[i], B[j]);
}
}
printf("}\n");
}
Протокол роботи програми
Висновок: Ознайомились з основними операціями над множинами. Виконав завдання згідно варіанту.