当前位置:网站首页>C language uses arrays to realize the intersection, union, difference and complement of sets
C language uses arrays to realize the intersection, union, difference and complement of sets
2022-07-05 07:40:00 【LCH Nan'an】
Start with the result chart :

Complete code :
#include <stdio.h>
// Initialize collection
int a[1024] = {0}, b[1024] = {0}, c[1024] = {0}, d[1024] = {0}, e[1024] = {0};
int com[1024] = {0}, temp[1024] = {0}, temp1[1024] = {0};
// display
void show()
{
printf("\t************** Set operation interface **************\n");
printf("\t\t**** 1-** Please enter the set first A and B Element is performing the following operations ******\n");
printf("\t\t**** 2-** Please assemble A∩B******\n");
printf("\t\t**** 3-** Please assemble AUB******\n");
printf("\t\t**** 4-** Please assemble A-B******\n");
printf("\t\t**** 5-** Please assemble CeA******\n");
printf("\t\t**** 0-** Exit the operation page ******\n");
printf("\t******************************************\n");
}
// aggregate AB Element filling
void input(int x, int y)
{
int i, j;
printf(" Please enter A Medium element :\n");
for (i = 0; i < x; i++)
{
scanf("%d", &a[i]);
getchar();
for (j = 0; j < i; j++)
{
if (a[i] == a[j])
{
printf(" Duplicate element occurred ");
a[i] = 0;
}
}
}
printf(" Please enter B Medium element :\n");
for (i = 0; i < y; i++)
{
scanf("%d", &b[i]);
getchar();
for (j = 0; j < i; j++)
{
if (b[i] == b[j])
{
printf(" Duplicate element occurred ");
b[i] = 0;
}
}
}
}
// aggregate A,B Intersection
int Mixed(int x, int y)
{
int i, j, k = 0;
for (i = 0; i < x; i++)
{
for (j = 0; j < y; j++)
{
if (a[i] == b[j])
{ // testing AB The same elements between sets
c[k] = a[i]; // Save the same element to the empty set
k++; // Statistics c The total number in the set
}
}
}
printf("A∩B={");
for (i = 0; i < k - 1; i++)
{ //k-1 effect : Reserve a place
printf(" %d,", c[i]);
}
printf(" %d}\n", c[k - 1]); // Output the last element and attach }
getchar();
}
// aggregate A,B Union
int Union(int x, int y)
{
int i, j, k = 0, m = 0, n;
for (i = 0; i < x; i++)
{
for (j = 0; j < y; j++)
{
if (a[i] == b[j])
{ // testing AB The same elements between sets
c[k] = a[i]; // Save the same element to the empty set
k++; // Statistics c The total number in the set
}
}
}
for (i = 0; i < x; i++)
{ // take A Set elements in com Collection
com[m] = a[i];
m++;
}
for (i = 0; i < y; i++)
{ // take B Set elements in com Collection
com[m] = b[i];
m++;
}
for (i = 0; i < x + y - k; i++)
{ //x+y-k by A,B Set the total number of all elements minus the same elements
for (j = i + 1; j < m; j++)
{ //
if (com[j] == com[i])
{
for (n = j; n < m; n++)
{
com[n] = com[n + 1];
}
break;
}
}
}
printf("AUB={");
for (i = 0; i < x + y - k - 1; i++)
{
printf(" %d,", com[i]);
}
printf(" %d}\n", com[x + y - k - 1]);
getchar();
}
// aggregate A,B The difference operation of
int Difference(int x, int y)
{
int i, j, k = 0;
int m;
for (i = 0; i < x; i++)
{
for (j = 0; j < y; j++)
{
if (a[i] == b[j])
{
c[k] = a[i];
k++;
}
}
} // The above is the intersection part , obtain A,B The total number of identical elements in the set
for (i = 0; i < x; i++)
{ // take A Set elements in D Collection
d[i] = a[i];
}
for (i = 0; i < x - k; i++)
{ // Remove the number of the same elements , Cycle through
for (j = 0; j < k; j++)
{
if (d[i] == c[j]) // use D The elements in the set are related to A,B Intersection set of C Compare elements
{
for (m = i; m < x; m++)
{ // If D In the set i Elements and sets C identical , be i The element after moves forward one bit
d[m] = d[m + 1];
}
i--;
break;
}
}
}
printf("A-B={");
for (i = 0; i < x - k - 1; i++)
{
printf(" %d,", d[i]); // Output difference set
}
printf(" %d}\n", d[x - k - 1]); // Enclosed }
getchar();
}
// aggregate E Fill of
void inputE(int elngth)
{
int i, j;
printf(" Please enter E Medium element :\n");
for (i = 0; i < elngth; i++)
{
scanf("%d", &e[i]);
getchar();
for (j = 0; j < i; j++)
{
if (e[i] == e[j])
{
printf(" Duplicate element occurred ");
e[i] = 0;
}
}
}
}
// aggregate A The complement of E
int Left(int x, int elength)
{ // Same as difference set
if (elength < x)
{
printf("E The number of elements should be greater than A Number of elements in \n");
return 0;
}
int i, j, k = 0, m = 0;
for (i = 0; i < elength; i++)
{
for (j = 0; j < x; j++)
{
if (e[i] == a[j])
{
temp1[k] = e[i];
k++;
}
}
}
for (i = 0; i < elength; i++)
{
temp[i] = e[i];
}
for (i = 0; i < elength - k; i++)// Remove the number of the same elements , Cycle through
{
for (j = 0; j < k; j++)
{
if (temp[i] == temp1[j]) // use E The elements in the set are related to A,E The intersection of compares elements
{
for (m = i; m < elength; m++)
{
temp[m] = temp[m + 1];
}
i--;
break;
}
}
}
printf("CeA={");
for (i = 0; i < elength - k - 1; i++)
{
printf(" %d,", temp[i]); // Output complement
}
printf(" %d}\n", temp[elength - k - 1]); // Enclosed }
//getchar();
}
// The main function
int main()
{
int x, y, elngth, choice;
while (1)
{
show();
printf(" Please enter the operation number :\n");
scanf("%d", &choice);
if (choice == 0)
{
printf(" Exit the operation page \n");
return 0;
}
else
{
switch (choice)
{
case 1:
printf(" Please enter A,B The number of set elements \n");
scanf("%d %d", &x, &y);
input(x, y);
printf(" Please press enter to continue !\n");
getchar();
break;
case 2:
Mixed(x, y);
printf(" Please press enter to continue !\n");
getchar();
break;
case 3:
Union(x, y);
printf(" Please press enter to continue !\n");
getchar();
break;
case 4:
Difference(x, y);
printf(" Please press enter to continue !\n");
getchar();
break;
case 5:
printf("A The length of the set :%d\n", x);
printf(" Please enter the set E Number of elements :\n");
scanf("%d", &elngth);
inputE(elngth);
Left(x, elngth);
printf(" Please press enter to continue !\n");
getchar();
break;
default:
break;
}
}
}
}边栏推荐
- Hdu1231 maximum continuous subsequence (divide and conquer or dynamic gauge or double pointer)
- CADD课程学习(5)-- 构建靶点已知的化合结构(ChemDraw)
- The mutual realization of C L stack and queue in I
- Distinction between heap and stack
- Using C language to realize IIC driver in STM32 development
- GBK error in web page Chinese display (print, etc.), solution
- deepin 20 kivy unable to get a window, abort
- Apple terminal skills
- Application of ultra pure water particle counter in electronic semiconductors
- 公安基础知识--fb
猜你喜欢

With the help of Navicat for MySQL software, the data of a database table in different or the same database link is copied to another database table

Basic series of SHEL script (III) for while loop

借助 Navicat for MySQL 软件 把 不同或者相同数据库链接中的某数据库表数据 复制到 另一个数据库表中

CADD课程学习(6)-- 获得已有的虚拟化合物库(Drugbank、ZINC)

Unforgettable summary of 2021

Explanation of parallel search set theory and code implementation

Numpy——1.数组的创建

数字孪生实际应用案例-风机篇

Today, share the wonderful and beautiful theme of idea + website address

Pagoda create multiple sites with one server
随机推荐
Openxlsx field reading problem
Rough notes of C language (2) -- constants
Cookie operation
Application of ultra pure water particle counter in electronic semiconductors
NSIS search folder
Day01 markdown log entry tips
Practical application cases of digital Twins - fans
How to deal with excessive memory occupation of idea and Google browser
What is deep learning?
Apple modify system shortcut key
CADD course learning (6) -- obtain the existing virtual compound library (drugbank, zinc)
RF ride side door processing of prompt box
2022 PMP project management examination agile knowledge points (7)
Function and usage of function pointer
MySQL - storage engine
[MySQL] database knowledge record
Apple input method optimization
I 用c I 实现队列
How to delete the virus of inserting USB flash disk copy of shortcut to
Professional knowledge of public security -- teacher bilitong