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
81
82
83
84
85
86
87
88
|
//输入集合A、B和全集C,求两集合的交集、并集、补集、差集
/*
并集:以属于A或属于B的元素为元素的集合成为A与B的并(集)
交集: 以属于A且属于B的元素为元素的集合成为A与B的交(集)
差:以属于A而不属于B的元素为元素的集合成为A与B的差(集)
补集:A的补集C-B
*/
/*
例如:A={1,2,3} B={2,3,4} C={1,2,3,4,5}
AB并集为={1,2,3,4}
交集为={2,3}
A补集={4,5}
AB差集为={1}
*/
#include <iostream>
#include <vector>
using
namespace
std;
int
main()
{
vector<
int
> A,B,C;
int
temp;
cout<<
"input A,finished by a character"
<<endl;
while
(cin>>temp)
A.push_back(temp);
cin.clear() ;
//清除错误状态
cin.ignore() ;
//跳过无效数据
cout<<
"input B,finished by a character"
<<endl;
while
(cin>>temp)
B.push_back(temp);
cin.clear() ;
cin.ignore() ;
cout<<
"input C,finished by a character"
<<endl;
while
(cin>>temp)
C.push_back(temp);
cin.clear();
cin.ignore();
//求交集
vector<
int
> AND;
for
(
int
i=0;i<A.size();i++)
for
(
int
j=0;j<B.size();j++)
if
(A[i]==B[j])
AND.push_back(B[j]);
cout<<
"交集为"
<<endl;
//显示交集
for
(i=0;i<AND.size();i++)
cout<<AND[i]<<
" "
;
cout<<endl;
//求并集
AND.clear();
//先把A的元素依次加入
for
(i=0;i<A.size();i++)
AND.push_back(A[i]);
//加入B中有且与A的每一个元素都不相等的元素
for
(
int
j=0;j<B.size();j++)
{
int
k=0;
for
(i=0;i<A.size();i++)
if
(B[j]!=A[i])
k++;
if
(k>=A.size())
AND.push_back(B[j]);
}
//显示并集
cout<<
"并集为"
<<endl;
for
(i=0;i<AND.size();i++)
cout<<AND[i]<<
" "
;
cout<<endl;
return
0;
}
|