⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 03081626_1.c

📁 这是离散数学中集合与图论部分的算法实现 压缩包中有六个算法
💻 C
字号:

#include<stdio.h>
#define N 10
char E[N];
void IN(char *A,char *E,int *b)
{
    int i,j;
	for(i=0;i<strlen(E);i++) b[i]=0;
      for(j=0;j<strlen(A);j++)
		for(i=0;i<strlen(E);i++)
			if(E[i]==A[j]) 
				b[i]=1;
}
void print(int *a,char *b)//输出函数
{
  int i;
  printf("    {");
    for(i=0;i<N;i++) 
	   if(a[i]==1)
  printf("%c ",b[i]);
  printf("}");
  printf("\n");
}
void cro(int *x,int *y,int z[N])//求交集,用z来储存所求得的交集
{
	int i;
    for(i=0;i<N;i++)
		z[i]=0;
	for(i=0;i<N;i++)
		if(x[i]==1&&y[i]==1)
			z[i]=1;
}

void inc(int *x,int *y,int z[N])//求并集,用z来储存所求得的并集
{
	int i;
	for(i=0;i<N;i++)
	    z[i]=0;
	for(i=0;i<N;i++)
	  if(x[i]==1||y[i]==1)
           z[i]=1;
}
void sub(int *x,int *y,int z[N])//求两集合相减
{
   int i;
	for(i=0;i<N;i++)
		if(x[i]==1&&y[i]==0)
			z[i]=1;
		else z[i]=0;
}
void com(int *x,int *y)//求补集,用y来储存求得的补集
{
	int i=0;
	for(i;i<N;i++)
	{
		if(x[i]==0)
			y[i]=1;
		else
			y[i]=0;
	}
}
main()
{
	int k=1;
    char E[10],A[10],B[10],C[10];
    int a[10],b[10],c[10];
    int p1[10],p2[10],p3[10];
	printf("输入全集:");
	gets(E);
    printf("输入子集A:");
	gets(A);
	printf("输入子集B:");gets (B);
    
	printf("输入子集C:");gets(C);
	IN(A,E,a);
    IN(B,E,b);
    IN(C,E,c);
	  printf("   A与B的补集的交集为:\n");
	com(b,p1);cro(a,p1,p2 );
	print(p2,E);
      printf("   A与B的交集与C补集的并集为:\n");
	cro(a,b,p1 );com(c,p2);inc(p1,p2,p3);
	print(p3,E);	
	  printf("   A与B交C的差集为:\n");
	cro(b,c,p1);sub(a,p1,p2 );
	print(p2,E);
	  printf("   A与B的对称差为:\n");
	inc(a,b,p1);cro(a,b,p2);sub(p1,p2,p3);
	print(p3,E);
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -