当前位置:网站首页>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;
}
}
}
}边栏推荐
- Calibre garbled
- Embedded AI intelligent technology liquid particle counter
- 2022 PMP project management examination agile knowledge points (7)
- Function of static
- The folder directly enters CMD mode, with the same folder location
- The sublime version that XP can run is 3114
- Deepin, help ('command ') output saved to file
- Mouse click fireworks explosion effect
- 玩转gRPC—深入概念与原理
- P3D gauge size problem
猜你喜欢

What is Bezier curve? How to draw third-order Bezier curve with canvas?

How to deal with excessive memory occupation of idea and Google browser

SQL JOINS

CADD course learning (5) -- Construction of chemosynthesis structure with known target (ChemDraw)

And let's play dynamic proxy (extreme depth version)

行测--资料分析--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

Explanation of parallel search set theory and code implementation

2022 PMP project management examination agile knowledge points (7)

Ue5 hot update - remote server automatic download and version detection (simplehotupdate)
随机推荐
I 用c l 栈与队列的相互实现
GBK error in web page Chinese display (print, etc.), solution
Function of static
Apple terminal skills
repo. conda. An example of COM path error
(top) pretty girl binary color code portal
MySQL - storage engine
Simple operation of running water lamp (keil5)
Basic operation of external interrupt (keil5)
大学生活的自我总结-大一
Numpy——1. Creation of array
Hdu1232 unimpeded project (and collection)
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
Eclipse project recompile, clear cache
CADD课程学习(6)-- 获得已有的虚拟化合物库(Drugbank、ZINC)
Detailed explanation of C language pointer
Deepin get file (folder) list
"Source code interpretation" famous programmer TJ's only library
Linked list (establishment, deletion, insertion and printing of one-way linked list)
使用go语言读取txt文件写入excel中