Ввід /вивід множин
Мінлива множинного типу не може бути використана в списках введення/виводу.
Приклад 13.1. Ввести рядок символів, яка закінчується символом ’.’. Визначити чи є у вводиться рядку цифри.
Текст програми
Program mno1;
Uses Crt;
{Робота з множинами. Визначити чи є у вводиться рядку цифри}
Type Digit =set of 0..9;
Var
z :Digit;
i,k :integer;
si :char;
Begin
ClrScr;
Write("Введіть рядок символів=>");
z:=[];
Repeat
Read(si);
k:=ord(si)-ord("0");
If k in [0..9] then z:=z+[k]
Until si=".";
Writeln;
If z=[] then writeln("Цифр немає")
else
Begin
Writeln("У рядку є наступні цифри:");
For i:=0 to 9 do if i in z then write(i:2);
Writeln;
End;
Repeat Until KeyPressed;
End.
Результат роботи програми:
Введіть рядок символів=>hgifq3p2uf32;bvp;927[293b7;/9v.
У рядку є наступні цифри:
2 3 7 9
Приклад 13.2. Задати три довільних безлічі одного базового типу. Сформувати новий безліч. X=(Y1-Y2)+(Y2*Y3). Перевірити чи включено Y3 в X . Підрахувати скільки разів у багатьох зустрічаються букви від А до К.
Текст програми
Program mno3;
Uses Crt;
Type mn= set of "A".."Z";
Const Y1:mn=["D","Y","F","A","E"];
Y2:mn=["K","O","F","A","E"];
Y3:mn=["D","S","F","R","E"];
Var X :mn;
K :byte;
S :"A".."Z";
P :Boolean;
Begin
ClrScr;
X:=(Y1-Y2)+(Y2*Y3); P:=Y3<=X;
Write("Y3 міститься в X? ",P); Writeln;
For S:="A" to "K" do
Begin
K:=0;
If S in Y1 then K:=K+1;
If S in Y2 then K:=K+1;
If S in Y3 then K:=K+1;
Writeln (" ":10,S ,"=> ":5,K);
End;
Repeat Until KeyPressed;
End.
Результат роботи програми:
Y3 міститься в X? FALSE
A => 2
B => 0
C => 0
D => 2
E => 3
F => 3
G =><0br />
H => 0
I => 0
J => 0
K => 1
Приклад 13.3. З використанням підпрограми задати три довільних безлічі одного базового типу. Сформувати новий безліч. X=(Y1-Y2)+(Y2*Y3). Перевірити чи включено Y3 в X . Підрахувати скільки разів у багатьох зустрічаються букви від А До к.
Текст програми
Program mno4;
Uses Crt;
Type mn= set of "A".."Z";
Var X,Y1,Y2,Y3 :mn;
K :byte;
S :"A".."Z";
P :Boolean;
Procedure Vv(n:byte;Var z:mn);
Var s :char;
Begin
Writeln ("Уведіть безліч Y",n);
z:=[];
Repeat
Read(S);
If s in ["A".."Z"] then z:=z+[s];
Until S=#13;
End;
Begin
ClrScr;
Writeln ("Введення безліч");
Vv(1,Y1); Vv(2,Y2); Vv(3,Y3);
X:=(Y1-Y2)+(Y2*Y3);
P:=Y3<=X;
Write("Y3 міститься в X? ",P);
Writeln;
For S:="A" to "K"do
Begin
K:=0;
If S in Y1 then K:=K+1;
If S in Y2 then K:=K+1;
If S in Y3 then K:=K+1;
Writeln (" ":10,S ,"=> ":5,K);
End;
Repeat Until KeyPressed;
End.
Результат роботи програми:
Введення множин
Уведіть безліч Y1
A D S F D R
Уведіть безліч Y2
S E R T Y
Уведіть безліч Y3
Q X C E R S A
Y3 міститься в X? FALSE
A => 2
B => 0
C => 1
D => 1
E => 2
F => 1
G => 0
H => 0
I => 0
J => 0
K => 0