当前位置:文档之家› 集合的特征函数交并补运算c语言

集合的特征函数交并补运算c语言

用集合的特征函数实现集合间的运算
一、实现功能:利用集合的特征函数实现集合间的运算。

二、实验说明:本程序用C语言编写,具体实现了集合的交并补运算。

三、程序思路(流程图表示):
Main()函数
输入全集U元素个
数和各元素
输入全集A元素个数和
各元素
输入全集B元素个数和
各元素
获得A和B的特征函数

调用子函数进行交并补
运算
结束
四、子函数功能
Equal()判断集合A和集合B是否相等
Intersect()求集合A和集合B的交集Union()求集合A和集合B的并集Complement()求集合A或集合B的补集五、测试举例
六、程序源码
/*-------------------------------------------
-----作者:随心无羁----------------------------
-----编译环境:VC6.0-------------------------
-----时间:2013.12.3------------------------*/
#include <stdio.h>
#include <stdlib.h>
int Equal(int m[100],int n[100],int num){//子函数:判断集合A和集合B是否相等
int i,flag = 1;
for(i=0;i<num;i++){
if(m[i] != n[i]){
flag = 0;
}
}
if(flag == 0) printf("\n集合A和集合B不相等\n");
if(flag == 1) printf("\n集合A和集合B相等\n");
return 1;
}
int Intersect(char UL[100],int m[100],int n[100],int num){//子函数:求集合A和集合B的交集int i,j,flag = 0;
char count[100];
for(j=0,i=0;i<num;i++){
f(m[i] == 1 || n[i] == 1){
count[j++] = UL[i];
flag++;
}
}
printf("集合A并B为:");
for(j=0;j<flag;j++)
printf("%c\t",count[j]);
return 1;
}
int Union(char UL[100],int m[100],int n[100],int num){//子函数:求集合A和集合B的并集int i,j,flag = 0;
char count[100];
for(j=0,i=0;i<num;i++){
if(m[i] == 1 && n[i] == 1){
count[j++] = UL[i];
flag++;
}
}
printf("\n集合A交B为:");
for(j=0;j<flag;j++)
printf("%c\t",count[j]);
return 1;
}
int Complement(char UL[100],int m[100],int num,int k){//子函数:求集合A或集合B的补集int i,j,flag = 0;
char count[100];
char L;
for(j=0,i=0;i<num;i++){
if(m[i] == 0){
count[j++] = UL[i];
lag++;
}
}
f(k ==1) L='A';
if(k ==2) L='B';
printf("\n集合%c的补集:",L);
for(j=0;j<flag;j++)
printf("%c\t",count[j]);
return 1;
}
int main()
{
char A[10],B[10],U[100];
int i,j,nu,n1,n2,temp_A[100],temp_B[100];
system("color 1B");
printf("请输入集合U元素数目:");
;scanf("%d",&nu);
getchar();
for(i=0;i < nu; i++){
scanf("%c",&U[i]);
getchar();
}
printf("请输入集合A元素数目:");
scanf("%d",&n1);
getchar();
for(i=0;i < n1; i++){
scanf("%c",&A[i]);
getchar();
}
printf("请输入集合B素数目:");
scanf("%d",&n2);
getchar();
for(i=0;i < n2; i++){
scanf("%c",&B[i]);
getchar();
}
printf("A的特征函数为:\n");
for(i=0;i<nu;i++){
for(j=0,temp_A[i]=0;j<n1;j++){
if(U[i] == A[j])
{
temp_A[i] = 1;
break;
}
}
printf("X(%c)= %d\t",U[i],temp_A[i]);
}
printf("\n B的特征函数为:\n");
for(i=0;i<nu;i++){
for(temp_B[i]=0,j=0;j<n2;j++){
if(U[i] == B[j])
{
temp_B[i] = 1;
break;
}
}
printf("X(%c)= %d\t",U[i],temp_B[i]);
}
Equal(temp_A,temp_B,nu);//调用子函数:判断集合A和集合B是否相等Intersect(U,temp_A,temp_B,nu);//调用子函数:求集合A和集合B的交集
Union(U,temp_A,temp_B,nu);//调用子函数:求集合A和集合B的并集Complement(U,temp_A,nu,1);//调用子函数:求集合A的补集Complement(U,temp_B,nu,2);//调用子函数:求集合B的补集
getchar();
}。

相关主题