I have 2 constant integer arrays. I am computing their union, difference, and intersection. I cannot figure out why it is outputting 1 in the intersection and not in the difference. 1 Should be in the difference, not the intersection.

Further, at the end of the program I have it run Element_set for set2[0] and it returns 0, like it should, and to make sure set2[0] is 2, I have it print that as well. Yet, in my output above, it still has the same problem.

My out put should look like this:

Set1: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Set2: 2, 4, 7, 9, 11

Union of 1&2: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11

Difference of 1&2: 1, 3, 5, 6, 8, 10

Intersection of 1&2: 2, 4, 7, 9

0 2

Any help appreciated

Code:#include <stdio.h> void Set_print(int Set[], int n); /* Declares function Set_print with parameters int Set[] and int n[] */ void Set_print(int Set[], int n) { int i=n+1; /* prints all the n values of the array Set[n] */ for( n = 0; n < i ; n++) printf(" %d", Set[n]); } int Element_set(int Set[], int n, int value); /* Declares function Element_set with parameters int Set[], int n, */ int Element_set(int Set[], int n, int value) /* and int value */ { int i; i=n+1; /* Checks n-elements of Set[n] for value and if value is in Set[] */ for(n=0; n<i; n++) /* it returns 1, if value is not in Set[] it returns 0 */ { if(value == Set[n]) return 1; } if(value != Set[i-1]) return 0; } int Set_union ( int Set1[], int Set2[], int Set3[], int n1, int n2 ); /* Declares function Set_union with parameters */ int Set_union ( int Set1[], int Set2[], int Set3[], int n1, int n2 ) /* int Set1[], int Set2[], int Set3[], int n1, */ { /* and int n2, n1 and n2 the elements of Set1 */ int value, set1, set2; /* and Set2, respectively */ int n3=0; for(value=1; value<12; value++) { /* Checks Set1[n1] and Set2[n2] to see if they */ set1 = Element_set(Set1, n1, value); /* contain value. If set1 or set2 contains */ set2 = Element_set(Set2, n2, value); /* value, then element n3 of Set3 is set to */ if(set1 == 1 || set2 == 1) /* value, and the element number of set3 is */ { /* returned */ Set3[n3] = value; n3++; } } return n3; } int Set_differ ( int Set1[], int Set2[], int Set3[], int n1, int n2); /* Declares function Set_differ with parameters */ int Set_differ ( int Set1[], int Set2[], int Set3[], int n1, int n2) /* int Set1[], int Set2[], int Set3[], int n1, */ { /* int n2, n1 and n2 the elements of Set1 and */ int value, set1, set2=0; /* Set2, respectively */ int n3; for(value=1; value<12; value++) { /* Checks Set1[n1] and Set2[n2] to see if they */ set1 = Element_set(Set1, n1, value); /* contain value. If set1 contains value AND */ set2 = Element_set(Set2, n2, value); /* set2 does NOT contain value, then element */ if(set1 == 1 && set2 == 0) /* n3 of Set3 is set to value, and the element */ { /* number of set3 is returned */ Set3[n3] = value; n3++; } } return n3; } int Set_inter ( int Set1[], int Set2[], int Set3[], int n1, int n2); /* Declares function Set_inter with parameters */ int Set_inter ( int Set1[], int Set2[], int Set3[], int n1, int n2) /* int Set1[], int Set2[], int Set3[], int n1 */ { /* and int n2. n1 and n2 the elements of Set1 */ int value, set1, set2; /* and Set2, respectively */ int n3=0; for(value=1; value<12; value++) /* Checks Set1[n1] and Set2[n2] to see if they */ { /* contain value. If set1 AND set2 BOTH */ set1 = Element_set(Set1, n1, value); /* contain value, then element n3 of set3 is */ set2 = Element_set(Set2, n2, value); /* set to value, and the element number of set3*/ if(set1 == 1 && set2 == 1 ) /* is returned. */ { Set3[n3] = value; n3++; } } return n3; } main() { int n1, n2,n3,sz3, l; int set1[10] = {1,2,3,4,5,6,7,8,9,10}; int set2[5] = {2,4,7,9,11}; int set3[11]={0}; printf("\nSet1\t"); Set_print(set1, 9); printf("\n\nSet2\t"); Set_print(set2, 4); for(n1=0, n2=0; n1<10 || n2<5; n1++, n2++) { sz3 = Set_union(set1, set2, set3, n1, n2); } printf("\n\nSet3\tUnion of 1&2\t", &Set_union); Set_print(set3, sz3-1); for(n1=0, n2=0; n1<10 || n2<5 ; n1++, n2++) { sz3 = Set_differ(set1, set2, set3, n1, n2); } printf("\n\nSet3\tDifference of 1&2\t"); Set_print(set3, sz3-1); for(n1=0, n2=0; n1<10 || n2<5 ; n1++, n2++) { sz3 = Set_inter(set1, set2, set3, n1, n2); } printf("\n\nSet3\tIntersection of 1&2\t", &Set_inter); Set_print(set3, sz3-1); printf("\n"); printf("\n%d", Element_set(set2, 4, 1)); printf(" %d", set2[0]); }