PASCAl编程(集合的运算)

来源:百度知道 编辑:UC知道 时间:2024/05/13 00:57:03
问题描述
在计算机科学应用中,我们经常要用到集合的运算,集合的运算操作有很多,下面是我们给出的集合基本运算定义:
(1)“∪”运算:设S,T是2个集合,那么S∪T是由S和T的元素组成的集合。
(2)“-”运算:设S,T是2个集合,那么S-T是由S中非T中的元素组成的集合。
(3)“∩”运算:设S,T是2个集合,那么S∩T是由既是S又是T的元素组成的集合。“⊕” 运算:设S,T是2个集合,那么S⊕T是由S中不是T中的元素和T中不是S中的元素组成的集合。
例如,S={1,2,3,4},T={3,4,5,6},那么:
S∪T={1,2,3,4,5,6} S-T={1,2}
S∩T={3,4} S⊕T={1,2,5,6}
你的任务就是:对于输入文件中给出的正整数集合S、T,编程求出S∪T,S-T,S∩T和S⊕T。
输入(set.in)
第1行,为集合S的各元素;第2行,为集合T的各元素;每行数据之间用空格分开,集合元素的个数≤10000,各正整数在1到30000之间。
输出(set.out)
第1行为集合S∪T;第2行为集合S-T;第3行为集合S∩T;第4行为集合S⊕T。
要求:集合的元素按由小到大顺序输出,正整数之间用空格分开;如果是空集,则输出-1。
样例
Set.in set.out
9 3 7 6 5 2 3 4 5 6 7 9 10
10 5 4 3 2 7 6 9
3 5 7
2 4 6 9 10

本人刚开始学,大家帮帮忙教下行吗,最好有源程序

program test1;
var s,t,r:set of byte;
a:byte;

procedure printR();
var i:byte;
begin
if r=[] then writeln(-1)
else begin
for i:=0 to 255 do if i in r then write(i,' ');
writeln;
end;
end;

begin
while not eoln do begin
read(a);
s:=s+[a];
end;
readln;
while not eoln do begin
read(a);
t:=t+[a];
end;
readln;
r:=s+t;
printR;
r:=s-t;
printR;
r:=s*t;
printR;
r:=(s+t)-(s*t);
printR;
end.