离散数学-集合的简单运算【并、交、差、补、环合(对称差)】

在这里插入图片描述

关于集合的并交差

1.集合的常用运算:

并集:X∪Y={x | x∈X或x∈Y}。
交集:X∩Y={x | x∈X且x∈Y}。
差集:X-Y={x | x∈X且x∉Y}。
如果X∩Y=∅,那么集合X与Y不相交。如果集合X和Y是集族S中的不同集合且X和Y不相交,那么集族S两两不相交。
#include <stdio.h>  
#define N 100  
main()
{  
    int a[N],b[N],c[N],d[N],e[N],h[N];  
    int aa[N],bb[N],ee[N],ff[N];  
    int i,j,k=1;  
    int x=1,y=1,z=1,o=1,g=1;  
    int m,n,w;  
    int flag;  
    printf("请输入集合A的元素个数:\n");  
    scanf("%d",&m);  
    printf("输入集合A的元素:\n");  
    for(i=1;i<=m;i++)
	{  
        scanf("%d",&a[i]);  
    }  
    printf("请输入集合B的元素个数:\n");  
    scanf("%c",&n);  
    printf("输入集合B的元素:\n");  
    for(i=1;i<=n;i++)
	{  
        scanf("%d",&b[i]);  
    } 
	printf("请输入集合E(全集)的元素个数:\n");  
    scanf("%c",&w);  
    printf("输入集合E的元素:\n");  
    for(i=1;i<=w;i++)
	{  
        scanf("%d",&e[i]);  
    }   
    
    for(i=1;i<=m;i++)//差集 
	{  
            flag=0;  
            for(j=1;j<=n;j++)
			{  
                if(a[i]==b[j])
				{
				   c[k]=a[i];
				   k++;
				   flag=1;
				   continue;
				}  
            }  
            if(flag==0)
			{  
                aa[x]=a[i];
				x++;
			}  
    }  
    
    for(i=1;i<=n;i++)
	{  
            flag=0;  
            for(j=1;j<=m;j++)
			{  
                if(a[j]==b[i])
				{
					flag=1;
					continue;
				}  
            }  
            if(flag==0)
			{  
                bb[y]=b[i];y++;
			}  
    }  
    
    for(i=1;i<=w;i++)
	{  
            flag=0;  
            for(j=1;j<=m;j++)
			{  
                if(a[j]==e[i])
				{
					flag=1;
					continue;
				}  
            }  
            if(flag==0)
			{  
                ee[z]=e[i];z++;
			}  
    } 
    
    for(i=1;i<=w;i++)
	{  
            flag=0;  
            for(j=1;j<=n;j++)
			{  
                if(b[j]==e[i])
				{
					flag=1;
					continue;
				}  
            }  
            if(flag==0)
			{  
                ff[o]=e[i];o++;
			}  
    } 
    
    for(i=1;i<=o;i++)
	{  
            flag=0;  
            for(j=1;j<=z;j++)
			{  
                if(ee[j]==ff[i])
				{
				    flag=1;
			    	h[g]=ff[i];
				    g++;
			    	continue;
				}  
            }  
            
    } 
    
    printf("A与B的交集={ ");  
    for(i=1;i<k;i++)
	{
		printf("%d ",c[i]);
	}
	printf("  }\n");
	
    printf("A与B的并集={ ");  
    for(i=1;i<x;i++)
	{
		printf("%d ",aa[i]);
	}  
    for(i=1;i<y;i++)
	{
		printf("%d ",bb[i]);
	}  
    for(i=1;i<k;i++)
	{
		printf("%d ",c[i]);
	}
	printf("  }\n");

	/*printf("A与B的环和={ ");
	for(i=1;i<x;i++)
	{
		printf("%d ",aa[i]);
	}  
    for(i=1;i<y;i++)
	{
		printf("%d ",bb[i]);
	}
	printf("  }\n"); */ 

	printf("A与B的差集={ ");
	for(i=1;i<x;i++)
	{
		printf("%d ",aa[i]);
	}
	printf("  }\n");

	/*printf("A与B的环积={ ");
	for(i=1;i<k;i++)
	{
		printf("%d ",c[i]);
	}
	for(i=1;i<g-1;i++)
	{
		printf("%d ",h[i]);
	}
	printf("  }\n"); */ 
} 

2.集合的补集:所研究的集合都是某个集合U的子集,此时U称为全集或全域。给定全集U和U的一个子集X,集合U-X称为X的余(补)集。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N  100
#define M 50
void create_array(int a[], int n)
{
	int i;
	for (i = 1; i <= n; i++) {
		a[i] = ((rand() % 100) + 1);
	}
	a[0] = n;
}
int cnt;
void printf_buji_arrray(int a[])
{
	int i;

	printf("数组为{");
	printf(" ");
	for (i = 1; i <= a[0]; i++) {
		printf(" %d ", a[i]);
	}
	printf("}\n");
}
void union_buji_array(int a[], int b[])
{
	int i, j, k;
	cnt = 1;
	for (i = 1; i <= a[0]; i++)
	{
		for (j = 1; j <= b[0]; j++)
		{
			if (a[i] == b[i])
				a[i] = 0;


		}
	}
}
int main()
{
	int a[N] = { 0 }, b[N] = { 0 };
	int i;
	printf("随机生成数组\n");
	create_array(a, 5);
	printf_buji_arrray(a);
	create_array(b, 5);
	printf_buji_arrray(b);
	union_buji_array(a, b);
	printf("补集:\n");
	printf("数组为{");
	for (i = 1; i <= a[0]; i++)
	{
		while (a[i] != 0)
		{
			printf(" %d ", a[i]);
			break;
		}
	}
	printf("}\n");
}

3.集合的环和(对称差)。给定集合A,B,定义对称差运算△如下:A△B = (A-B)∪(B-A)。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N  100
#define M 50
void create_array(int a[], int n)
{
	int i;
	for (i = 1; i <= n; i++) {
		a[i] = ((rand() % 100) + 1);
	}
	a[0] = n;
}
int cnt;
void printf_huanhe_arrray(int a[])
{
	int i;   
	printf("数组为{  ");	
	for (i = 1; i <= a[0]; i++) {
		printf(" %d ", a[i]);
	}
	printf("}\n");
}
void union_huanhe_array(int a[], int b[])
{
	int x, i, j, temp;
	cnt = 0;
	for (i = 1; i <= a[0]; i++)
	{
		x = a[i];
		temp = 0;
		for (j = 1; j <= b[0]; j++)
			if (x == b[j])
				temp = 1;

		if (temp)
		{
			a[i] = -10;
			cnt++;

		}
	}

}
void bingji_huanhe_array(int a[], int b[])
{
	int x, i, j;
	for (i = 1; i <= b[0]; i++)
	{
		x = b[i];
		for (j = 1; j <= a[0]; j++)
			if (x == a[j])
				break;
		if (j>a[0]) {
			a[a[0] + 1] = x;
			a[0]++;
		}
	}

}
int main()
{
	int a[N] = { 0 }, b[N] = { 0 };
	printf("随机生成数组");
	create_array(a, 5);
	printf_huanhe_arrray(a);
	create_array(b, 5);
	printf_huanhe_arrray(b);
	union_huanhe_array(a, b);
	union_huanhe_array(b, a);
	bingji_huanhe_array(a, b);
    printf("环和");
	printf_huanhe_arrray(a);
}

环合水解作为合成盐酸加替沙星的关键步骤之一,其优化对于提高总收率以及减少副产物生成至关重要。首先,需要了解环合水解的化学机理和反应条件。这一步通常涉及到一个或多个环状结构的形成,伴随着水分子的脱离,可能会产生多种副产物。为了优化这一过程,可以从以下几个方面着手: 参考资源链接:[新型合成方法:2,4,5-三氟-3-甲氧基苯甲酸制备盐酸加替沙星](https://wenku.youkuaiyun.com/doc/2bdw73nkzq?spm=1055.2569.3001.10343) 1. 反应温度:适当调整环合水解反应的温度,既可保证反应速率,又可减少副反应的发生。高温可能会增加副产物的生成,而低温可能会减缓反应速率,需要找到二者之间的平衡点。 2. 溶剂选择:选择合适的溶剂可以提高目标产物的收率抑制副反应。需考虑溶剂的极性、沸点和对反应物的溶解性,以及溶剂对反应中间体和最终产物稳定性的影响。 3. 催化剂的使用:加入特定的催化剂能够促进水解环合反应的进行,同时抑制副反应。催化剂的选择需要基于对反应机制的理解,以确保其只促进所需路径的转化。 4. 反应时间控制:过长的反应时间可能导致副产物的积累,而时间不足则可能无法使反应完全转化。因此,精确控制反应时间对优化反应收率至关重要。 5. 底物浓度:优化底物的浓度可以有效避免副反应的发生。通常,底物浓度越高,反应速率越快,但过高的浓度可能会导致副产物的增多。 通过实验和条件优化,可以确定最佳的反应条件以提高总收率减少副产物。需要注意的是,每次改变条件后都需要通过分析手段(如HPLC、NMR等)来检测反应进程和产物纯度。 有关盐酸加替沙星合成的详细信息,可以参考《新型合成方法:2,4,5-三氟-3-甲氧基苯甲酸制备盐酸加替沙星》。该资料详细描述了合成过程中的关键步骤和优化策略,能够为研究人员提供实际操作的参考。 在掌握了优化环合水解步骤的方法后,为了进一步提高对药物合成的理解,建议深入阅读更多关于药物合成的先进文献和专利,同时也可以考虑实践操作中对合成过程进行实时监控,以便更精确地控制反应条件,最终实现对合成工艺的进一步完善。 参考资源链接:[新型合成方法:2,4,5-三氟-3-甲氧基苯甲酸制备盐酸加替沙星](https://wenku.youkuaiyun.com/doc/2bdw73nkzq?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值