Union of Subsets

closed account (o1w5fSEw)
Greetings!

I'm currently trying to write a program that will allow a user to enter two subsets [A and B] from a range of numbers provided [0-10] and calculate the union of the two. (I will eventually code restrictions on the range)... But I'm having trouble with the calculation of the union and get crazy results.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include<iostream>
#include<string>
using namespace std;

int main()
{
	int countA = 0, countB = 0, i,j, k=0;
	int subsetA[11], subsetB[11], answer[11];


	cout<<"Greetings, User!"<<endl;
	cout<<"\nUniverse of Discourse: U = {0,1,2,3,4,5,6,7,8,9,10}"<<endl;
	cout<<"\nUsing the elements stated above; create two subsets."<<endl;
	
	cout<<"For Subset A, how many elements would you like to enter? ";
	cin>>countA;
	cout<<"Subset A: ";
	
	for(i=0;i<countA;i++)
		cin>>subsetA[i];

	cout<<"\nFor Subset B, how many elements would you like to enter? ";
	cin>>countB;
	cout<<"Subset B: ";

	for(i=0;i<countB;i++)
		cin>>subsetB[i];
	
	cout<<"\nThe Subset A you entered: ";
	for(i=0;i<countA;i++)
	{
		cout<<subsetA[i];
		cout<<' ';
	}

	cout<<endl;
	
	cout<<"\nThe Subset B you entered: ";
	for(i=0;i<countB;i++)
	{
		cout<<subsetB[i];
		cout<<' ';
	}

	cout<<endl;

	cout<<"\nThe cardinality of Subset A: "<<countA<<endl;
	cout<<"\nThe cardinality of Subset B: "<<countB<<endl;

	cout<<endl;

	cout<<"The union of Subsets A and B is: ";

	for(i=0;i<countA;i++)
	{
		for(j=0;j<countB;j++)
		{
			if(subsetA[i] == subsetB[j])
			{
				answer[k] = subsetB[j];
				k++;
			}
			else 
			{
				answer[k] = subsetB[j];
				k++;
				answer[k] = subsetA[i];
				k++;
			}
		}
	}
	cout<<"\nAnswer: "<<endl;
	for(i=0;i<k;i++)
	{
		cout<<answer[i];
		cout<<' ';
	}

	return 0;
}



If anyone could help me out; I know I'm missing something for these nested for loops (lines 52 - 72) to work properly but can't seem to figure it out... Highly appreciated and thanks in advance! :)
http://www.cplusplus.com/forum/articles/40071/#msg218019
Make a desk test.

One approach is to start with answer=subsetA, and add B-A to that.
1
2
3
4
5
6
7
			else 
			{
				answer[k] = subsetB[j];
				k++;
				answer[k] = subsetA[i];
				k++;
			}


This will exceed the bounds of the array. You've put two entries into answer for each subset, it's only 11 large, and if it hits this else even once the array will try to allocate a 12th member, which it can't do.
Topic archived. No new replies allowed.