当前位置:网站首页>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;
}
}
}
}
边栏推荐
- Idea push project to code cloud
- Self summary of college life - freshman
- Daily Practice:Codeforces Round #794 (Div. 2)(A~D)
- Numpy——1.数组的创建
- Simple operation with independent keys (hey, a little fancy) (keil5)
- How to delete the virus of inserting USB flash disk copy of shortcut to
- Butterfly theme beautification - Page frosted glass effect
- Web page Chinese display (print, etc.) GBK error, solution, software
- Significance and requirements of semiconductor particle control
- Line test -- data analysis -- FB -- teacher Gao Zhao
猜你喜欢
I implement queue with C I
Could NOT find XXX (missing: XXX_LIBRARY XXX_DIR)
When jupyter notebook is encountered, erroe appears in the name and is not output after running, but an empty line of code is added downward, and [] is empty
Hdu1231 maximum continuous subsequence (divide and conquer or dynamic gauge or double pointer)
Opendrive arc drawing script
CADD课程学习(6)-- 获得已有的虚拟化合物库(Drugbank、ZINC)
Thunderbird tutorial \ easy to use mail client
The folder directly enters CMD mode, with the same folder location
How to delete the virus of inserting USB flash disk copy of shortcut to
Shadowless cloud desktop - online computer
随机推荐
Ugnx12.0 initialization crash, initialization error (-15)
Clickhouse database installation deployment and remote IP access
Simple operation with independent keys (hey, a little fancy) (keil5)
使用go语言读取txt文件写入excel中
Simple use of timeunit
Cookie operation
Apple input method optimization
And play the little chestnut of dynamic agent
A complete set of indicators for the 10000 class clean room of electronic semiconductors
How to deal with excessive memory occupation of idea and Google browser
Openxlsx field reading problem
msys2
Basic series of SHEL script (III) for while loop
The golang timer uses the stepped pit: the timer is executed once a day
Hdu1231 maximum continuous subsequence (divide and conquer or dynamic gauge or double pointer)
MySQL - storage engine
Calibre garbled
Esmini longspeedaction modification
Shadowless cloud desktop - online computer
Mouse click fireworks explosion effect