Sets
优质
小牛编辑
126浏览
2023-12-01
集合是相同类型的元素的集合。 Pascal允许定义设置数据类型。 集合中的元素称为其成员。 在数学中,集合通过将成员braces{}在braces{}内来表示。 但是,在Pascal中,set元素包含在方括号[]中,它们被称为set构造函数。
定义集类型和变量
Pascal集类型定义为
type
set-identifier = set of base type;
集类型的变量定义为
var
s1, s2, ...: set-identifier;
要么,
s1, s2...: set of base type;
一些有效的集类型声明的示例是 -
type
Days = (mon, tue, wed, thu, fri, sat, sun);
Letters = set of char;
DaySet = set of days;
Alphabets = set of 'A' .. 'Z';
studentAge = set of 13..20;
设置运算符
您可以在Pascal集上执行以下设置操作。
Sr.No | 操作和描述 |
---|---|
1 | Union 这将连接两个集合,并为两个集合中的成员提供一个新集合。 |
2 | Difference 获取两个集合的差异,并给出一个新集合,其中的元素与任何集合都不相同。 |
3 | Intersection 获取两个集合的交集,并给出一个新集合,其中包含两个集合共有的元素。 |
4 | Inclusion 如果P中的所有项目也在Q中但是反之亦然,则集合P包括在集合Q中。 |
5 | Symmetric difference 获取两个集合的对称差异,并给出一组元素,这些元素位于任一集合中,而不是在它们的交集中。 |
6 | In 它检查会员资格。 |
下表显示了Free Pascal支持的所有集合运算符。 假设S1和S2是两个字符集,这样 -
S1:= ['a','b','c'];
S2:= ['c','d','e'];
操作者 | 描述 | 例 |
---|---|---|
+ | 联盟两套 | S1 + S2将给出一组 ['a','b','c','d','e'] |
- | 两套的差异 | S1-S2将给出一组 ['a','b'] |
* | 交叉两套 | S1 * S2将给出一组 ['C'] |
>< | 两组的对称差异 | S1> |
= | 检查两组的相等性 | S1 = S2将给出布尔值False |
<> | 检查两组不相等 | S1 <> S2将给出布尔值True |
<= | 包含(检查一组是否是另一组的子集) | S1 <= S2将给出布尔值False |
Include | 包括集合中的元素; 基本上它是一个集合的联合和一个相同基类型的元素 | 包含(S1,['d'])将给出一组 ['A B C D'] |
Exclude | 从集合中排除元素; 基本上它是一个集合的差异和相同基本类型的元素 | 排除(S2,['d'])将给出一组 ['c','e'] |
In | 检查设置集合中元素的成员资格 | S2中的['e']给出布尔值True |
例子 (Example)
以下示例说明了其中一些运算符的使用 -
program setColors;
type
color = (red, blue, yellow, green, white, black, orange);
colors = set of color;
procedure displayColors(c : colors);
const
names : array [color] of String[7]
= ('red', 'blue', 'yellow', 'green', 'white', 'black', 'orange');
var
cl : color;
s : String;
begin
s:= ' ';
for cl:=red to orange do
if cl in c then
begin
if (s<>' ') then s :=s +' , ';
s:=s+names[cl];
end;
writeln('[',s,']');
end;
var
c : colors;
begin
c:= [red, blue, yellow, green, white, black, orange];
displayColors(c);
c:=[red, blue]+[yellow, green];
displayColors(c);
c:=[red, blue, yellow, green, white, black, orange] - [green, white];
displayColors(c);
c:= [red, blue, yellow, green, white, black, orange]*[green, white];
displayColors(c);
c:= [red, blue, yellow, green]><[yellow, green, white, black];
displayColors(c);
end.
编译并执行上述代码时,会产生以下结果 -
[ red , blue , yellow , green , white , black , orange]
[ red , blue , yellow , green]
[ red , blue , yellow , black , orange]
[ green , white]
[ red , blue , white , black]