gpt4 book ai didi

c - 三个数组的并集、交集和差集

转载 作者:行者123 更新时间:2023-11-30 20:30:51 25 4
gpt4 key购买 nike

在此代码中,我尝试创建三个数组。 IN 成功尝试通过这三个数组进行并集。但是当我想要做一个交叉点和差异时我做不到。

#include <stdio.h>

int main()
{
int dizi1Sinir, dizi1Deger; // ilk alt kumenin degiskenleri
int dizi2Sinir, dizi2Deger; // ikinci alt kumenin degiskenleri
int dizi3Sinir, dizi3Deger; // ucuncu alt kumenin degiskenleri



// BIRINCI ALT KUME TANIMLAMA ISLEMLERI

printf("ilk alt kumen kac elemanli olsun?\n");
scanf("%d", &dizi1Sinir);

int alt_kume_1[dizi1Sinir]; // ilk alt kume

for(dizi1Deger = 0; dizi1Deger < dizi1Sinir; dizi1Deger++)
{
printf("dizinin elemanlarini gir.\n %dnci eleman = ", dizi1Deger + 1);
scanf("%d", &alt_kume_1[dizi1Deger]);
}

// -------------------------------------------------------------------------------

//IKINCI ALT KUME TANIMLAMA ISLEMLERI

printf("ikinci alt kumen kac elemanlı olsun?\n");
scanf("%d", &dizi2Sinir);

int alt_kume_2[dizi2Sinir]; // ikinci alt kume

for(dizi2Deger = 0; dizi2Deger < dizi2Sinir; dizi2Deger++)
{
printf("dizinin elemanlarini gir.\n %dnci eleman = ", dizi2Deger + 1);
scanf("%d", &alt_kume_2[dizi2Deger]);
}


//UCUNCU ALT KUME TANIMLAMA ISLEMLERI


printf("ucuncu alt kumen kac elemanli olsun?\n");
scanf("%d", &dizi3Sinir);

int alt_kume_3[dizi3Sinir]; // ucuncu alt kume

for(dizi3Deger = 0; dizi3Deger < dizi3Sinir; dizi3Deger++)
{
printf("dizinin elemanlarini gir.\n %dnci eleman = ", dizi3Deger + 1);
scanf("%d", &alt_kume_3[dizi3Deger]);
}


//---------------------------------
int azami=dizi1Sinir+dizi2Sinir+dizi3Sinir;
int birlesim[azami];

int i;
for(i=0;i<azami;i++)
{
if(i<dizi1Sinir)
birlesim[i]=alt_kume_1[i];
else if(i-dizi1Sinir<dizi2Sinir)
birlesim[i]=alt_kume_2[i-dizi1Sinir];
else
birlesim[i]=alt_kume_3[i-dizi1Sinir-dizi2Sinir];
}
//-----------------------------



//Ayni Elemanlari Sil (-1)

for(i=0;i<azami;i++)
{
int tempSayi=birlesim[i];
int j;
for(j = 0;j<i;j++)
{
if(birlesim[j]==tempSayi)
{
birlesim[i]=-1;

}
}
}

printf("\nbirlesim = ");
for(i = 0; i < azami; i++)
{
if(birlesim[i]!=-1)
printf("%d ", birlesim[i]);
}

最佳答案

int main() {

//************************

printf("\ninsertion dizi_1 and dizi_2 : ");
intersection_two_arrays(alt_kume_1,dizi1Sinir,alt_kume_2,dizi2Sinir);
printf("\ninsertion dizi_1 and dizi_3 : ");
intersection_two_arrays(alt_kume_1,dizi1Sinir,alt_kume_3,dizi3Sinir);
printf("\ninsertion dizi_2 and dizi_3 : ");
intersection_two_arrays(alt_kume_2,dizi2Sinir,alt_kume_3,dizi3Sinir);

printf("\ninsertion dizi_1 dizi_2 and dizi_3 : ");
intersection_three_arrays(alt_kume_1,dizi1Sinir,alt_kume_2,dizi2Sinir,alt_kume_3,dizi3Sinir);

//...etc
//*************************

printf("\nDifference dizi_1 - dizi_2 : ");
differenceX_Y(alt_kume_1,dizi1Sinir,alt_kume_2,dizi2Sinir);
printf("\nDifference dizi_2 - dizi_1 : ");
differenceX_Y(alt_kume_2,dizi2Sinir,alt_kume_1,dizi1Sinir);
printf("\nDifference dizi_2 - dizi_3 : ");
differenceX_Y(alt_kume_2,dizi2Sinir,alt_kume_3,dizi3Sinir);

printf("\nDifference dizi_1 - dizi_2 and dizi_3 : ");
differenceX_YandZ(alt_kume_1,dizi1Sinir,alt_kume_2,dizi2Sinir,alt_kume_3,dizi3Sinir);

//...etc
//*************************

}

函数1:两个集合的交集

void intersection_two_arrays(int kume_1[], int sinir1 , int kume_2[] , int sinir2)
{
int i,j;
int value;
if(sinir1>sinir2) value=sinir2;
else value=sinir1;
int hold[value];
int h=0;

for(i=0; i<sinir1; i++) {
for(j=0; j<sinir2; j++) {
if(kume_1[i] == kume_2[j]) {
hold[h++] = kume_1[i];
continue;
}
}
}

if(h==0) {
printf("There is not common value");
}

else {
for(i=0; i<h; i++) {
printf("%d ", hold[i]);
}
}

}

函数2:三组的交集

void intersection_three_arrays(int kume_1[], int sinir1 , int kume_2[] , int sinir2, 
int kume_3[], int sinir3)
{
int i,j;
int value;
if(sinir1>sinir2) value=sinir2;
else value=sinir1;
int hold[value];
int h=0;

for(i=0; i<sinir1; i++) {
for(j=0; j<sinir2; j++) {
if(kume_1[i] == kume_2[j]) {
hold[h++] = kume_1[i];
continue;
}
}
}

intersection_two_arrays(hold,h, kume_3,sinir3);

}

函数 3:X-Y 差值

void differenceX_Y(int kume_1[], int sinir1 , int kume_2[] , int sinir2)
{
int i,j;
int value;
if(sinir1>sinir2) value=sinir1;
else value=sinir2;
int hold[value];
int h=0;
int findEqual=0;


for(i=0; i<sinir1; i++) {
for(j=0; j<sinir2; j++) {
if(kume_1[i] == kume_2[j]) {
findEqual++;
continue;
}
}
if(findEqual==0) hold[h++] = kume_1[i];
findEqual=0;
}


if(h==0) {
printf("There is not different value.");
}

else {
for(i=0; i<h; i++) {
printf("%d ", hold[i]);
}
}

}

函数 4:差值 X-(Y 和 Z)

void differenceX_YandZ(int kume_1[], int sinir1 , int kume_2[] , int sinir2, int 
kume_3[], int sinir3)
{
int i,j;
int value;
if(sinir1>sinir2) value=sinir1;
else value=sinir2;
int hold[value];
int h=0;
int findEqual=0;


for(i=0; i<sinir1; i++) {
for(j=0; j<sinir2; j++) {
if(kume_1[i] == kume_2[j]) {
findEqual++;
continue;
}
}
if(findEqual==0) hold[h++] = kume_1[i];
findEqual=0;
}

differenceX_Y(hold, h , kume_3, sinir3);

}

关于c - 三个数组的并集、交集和差集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53044833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com