Cài đặt tập hợp bằng vecto Bit
Giao hai tập hợp
Hợp hai tập hợp
Hiệu hai tập hợp c = A\B
CHƯƠNG TRÌNH MẪU
Giao hai tập hợp
Code:
void Intersection(Set A, Set B, Set C) {
for (int i=0; i<MaxLength; i++)
if ((A[i]==1)&&(B[i]==1))
C[i] = 1;
else
C[i] = 0;
}
Hợp hai tập hợp
Code:
void Union(Set A, Set B, Set C) {
for (int i=0; i<MaxLength; i++)
if ((A[i]==1)||(B[i]==1))
C[i] = 1;
else
C[i] = 0;
}
Hiệu hai tập hợp c = A\B
Code:
void Difference(Set A, Set B, Set C) {
for (int i=0; i<MaxLength; i++)
if ((A[i]==1)&&(B[i]==1))
C[i] = 0;
else
C[i] = A[i];
}
CHƯƠNG TRÌNH MẪU
Code:
#include <stdio.h>
#include <conio.h>
#define MaxLength 100
typedef char Set[MaxLength];
//khoi tao tap hop rong
void MakeNull(Set A) {
for(int i=0; i<MaxLength; i++)
A[i] = 0;
}
// C = A hop B
void Union(Set A, Set B, Set C) {
for (int i=0; i<MaxLength; i++)
if ((A[i]==1)||(B[i]==1))
C[i] = 1;
else
C[i] = 0;
}
//C = A giao B
void Intersection(Set A, Set B, Set C) {
for (int i=0; i<MaxLength; i++)
if ((A[i]==1)&&(B[i]==1))
C[i] = 1;
else
C[i] = 0;
}
//C=A\B
void Difference(Set A, Set B, Set C) {
for (int i=0; i<MaxLength; i++)
if ((A[i]==1)&&(B[i]==1))
C[i] = 0;
else
C[i] = A[i];
}
//kiem tra thanh vien
unsigned char Member(int x, Set A) {
return A[x]==1;
}
//them phan tu x vao tap hop A
void Insert(int x, Set A) {
A[x] = 1;
}
//xoa phan tu x khoi tap hop A
void Delete(int x, Set A) {
A[x] = 0;
}
//B = A
void Assign( Set A, Set B) {
for (int i=0; i<MaxLength; i++)
B[i] = A[i];
}
//tim phan tu nho nhat trong tap hop
int Min(Set A){
int i = 0;
while(i<MaxLength && A[i]==0)
i++;
if(i<MaxLength)
return i;
else
return -1;
}
//kiem tra A = B
unsigned char Equal(Set A, Set B) {
int i = 0, Found = 0;
while(i<MaxLength && Found == 0)
if(A[i] != B[i])
Found = 1;
else
i++;
return Found;
}
//Nhap tap hop
void Read(Set A) {
int x = 0;
printf("\nNhap den -1 thi ket thuc: ");
do {
scanf("%d",&x);
if(x!=-1)
A[x] = 1;
}while(x!=-1);
}
//Xuat tap hop
void Write(Set A) {
for (int i=0; i<MaxLength; i++)
if(A[i]==1)
printf("%3d",i);
}
//chuong trinh chinh
void main() {
clrscr();
Set A, B, C;
MakeNull(A);
Read(A);
printf("Tap hop A:\n");
Write(A);
MakeNull(B);
Read(B);
printf("\nTap hop B:\n");
Write(B);
MakeNull(C);
Union(A,B,C);
printf("\nA hop B:\n");
Write(C);
MakeNull(C);
Intersection(A,B,C);
printf("\nA giao B:\n");
Write(C);
MakeNull(C);
Difference(A,B,C);
printf("\nA\B:\n");
Write(C);
getch();
}