Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
18
Добавлен:
28.06.2014
Размер:
6.9 Кб
Скачать
{ЋЇҐа жЁЁ ­ ¤ ¬­®¦Ґбвў ¬Ё}
program Lab4_Zaharov;
uses crt;
const R=ord('z')-ord('a');
type Mas=array[1..100] of char;
Letter='a'..'z';
TSet=set of letter;
LogicMas=array [1..100] of boolean;
var A,B,C,D : TSet;
la,lb,lc,ld,ld1,ld2,ld3,i,j,con : integer; p:char;
fa,fb,fc : text;
fl : boolean;
Aarray,Barray,Carray,Darray,D1array,D2array,D3array : Mas;
ALog,BLog,CLog,DLog,D1Log,D2Log,D3Log : LogicMas;

{Џа®жҐ¤га . ‚ў®¤ ¤ ­­ле Ё§ ⥪бв®ў®Ј® д ©«  Ё д®а¬Ёа®ў ­ЁҐ ¬ ббЁў  Ё ¬­®¦Ґбвў }
procedure VVOD (var f : text; var X : TSet; var Xarray : MAS; var lx : integer; num : char);
var ch : char;
i : integer;
begin
assign (f,'G:\LAB4\LAB4IN'+num+'.txt');
reset (f);
lx:=0;
while not eof(f) do
begin
read (f,ch);
X:=X+[ch];
lx:=lx+1;
Xarray[lx]:=ch;
end;
close (f);
end;

Procedure WriteSet(X:TSet);
Var a,b,i:integer;
Begin
a:=ord('a');
b:=ord('z');
For i:=a to b do
If chr(i) in X then
Write(chr(i),' ');
End;

{Џа®жҐ¤га . ‚лў®¤ ¬­®¦Ґбвў  ­  нЄа ­}
procedure VIVODset (var X : TSet);
begin
write ('[ ');
writeSet (X);
write (']');
readln;
end;

{Џа®жҐ¤га . ‚лў®¤ ўҐЄв®а  ­  нЄа ­}
procedure VIVODarray (var Xarray : Mas; lx : integer);
var i : integer;
begin
write ('[ ');
for i:=1 to lx do write (Xarray[i],' ');
write (']');
readln;
end;

{Џа®жҐ¤га . ‚лў®¤ «®ЈЁзҐбЄ®Ј® ¬ ббЁў }
procedure VIVODarraylog (var Xarray : LogicMas; lx : integer);
var i : integer;
begin
write ('[ ');
for i:=1 to lx do
if Xarray[i]=true
then write (chr(i+ord('a')-1),' ');
write (']');
readln;
end;

{Џа®жҐ¤га . ”®а¬Ёа®ў ­ЁҐ ўҐЄв®а  Ё§ ¬­®¦Ґбвў }
procedure SetToArray (X : TSet; lx : integer; Var Xarray : Mas);
var i:char;
begin
lx:=0;
for i:='a' to 'z' do
if i in X then
begin
lx:=lx+1;
Xarray[lx]:=i;
end;
end;

{ѓ‹Ђ‚ЌЂџ ЏђЋѓђЂЊЊЂ}
begin
repeat
clrscr;
textcolor (lightgray);
writeln;
writeln (' ‹ Ў®а в®а­ п а Ў®в  # 4');
writeln (' ЋЇҐа жЁЁ ­ ¤ ¬­®¦Ґбвў ¬Ё.');
writeln;
VVOD (fa,A,Aarray,la,'1');
VVOD (fb,B,Barray,lb,'2');
VVOD (fc,C,Carray,lc,'3');
textcolor (lightblue);
writeln;
writeln ('ђҐ «Ё§ жЁп ¬­®¦Ґбвў  бЇ®б®Ў®¬ 1:');
textcolor (lightgray);
D:=(A-B)+(B-A)-C;
write ('Њ­®¦Ґбвў® Ђ --> '); VIVODset (A);
write ('Њ­®¦Ґбвў® B --> '); VIVODset (B);
write ('Њ­®¦Ґбвў® C --> '); VIVODset (C);
write ('Њ­®¦Ґбвў® D --> '); VIVODset (D);
textcolor (lightblue);
writeln;
writeln ('ђҐ «Ё§ жЁп ¬­®¦Ґбвў  бЇ®б®Ў®¬ 2a:');
textcolor (lightgray);
{ЋЎа Ў®вЄ  ¤ ­­ле}
{D1:=A-B}
ld1:=1;
for i:=1 to la do
begin
fl:=true;
for j:=1 to lb do
if Aarray[i]=Barray[j]
then fl:=false;
if fl=true then begin D1array[ld1]:=Aarray[i]; ld1:=ld1+1; end;
end;
ld1:=ld1-1;
write ('‚ҐЄв®а D1=A-B --> '); VIVODarray (D1array,ld1);
{D2:=B-A}
ld2:=1;
for i:=1 to lb do
begin
fl:=true;
for j:=1 to la do
if Barray[i]=Aarray[j]
then fl:=false;
if fl=true then begin D2array[ld2]:=Barray[i]; ld2:=ld2+1; end;
end;
ld2:=ld2-1;
write ('‚ҐЄв®а D2=B-A --> '); VIVODarray (D2array,ld2);
{D3:=D1+D2}
for i:=1 to ld1 do D3array[i]:=D1array[i];
ld3:=ld1;

for j:=1 to ld2 do
begin
fl:=true;
for i:=1 to ld1 do
if D3array[i]=D2array[j]
then fl:=false;
if fl=true then begin ld3:=ld3+1; D3array[ld3]:=D2array[j]; end;
end;
write ('‚ҐЄв®а D3=D1+D2 --> '); VIVODarray (D3array,ld3);
{D:=D3-C}
ld:=1;
for i:=1 to ld3 do
begin
fl:=true;
for j:=1 to lc do
if D3array[i]=Carray[j]
then fl:=false;
if fl=true then begin Darray[ld]:=D3array[i]; ld:=ld+1; end;
end;
ld:=ld-1;
write ('‚ҐЄв®а D=D3-C --> '); VIVODarray (Darray,ld);
{‘Ї®б®Ў 2Ў}
{”®а¬Ёа®ў ­ЁҐ "зЁбвле" ¬ ббЁў®ў Ђ,B,‘ Ё D}
textcolor (lightblue);
writeln;
writeln ('ђҐ «Ё§ жЁп ¬­®¦Ґбвў  бЇ®б®Ў®¬ 2Ў:');
textcolor (lightgray);
For i:=1 to R do
begin
ALog[i]:=false;
BLog[i]:=false;
CLog[i]:=false;
DLog[i]:=false;
end;
{‡ Ї®«­Ґ­ЁҐ ¬ ббЁў®ў}
for p:='a' to 'z' do
if p in A then ALog[ord(p)-ord('a')+1]:=true;
for p:='a' to 'z' do
if p in B then BLog[ord(p)-ord('a')+1]:=true;
for p:='a' to 'z' do
if p in C then CLog[ord(p)-ord('a')+1]:=true;
{ЋЎа Ў®вЄ  ¤ ­­ле}
{D1:=A-B}
for i:=1 to 26 do
if (ALog[i]=true) and (BLog[i]=false)
then D1Log[i]:=true
else D1Log[i]:=false;
{D2:=B-A}
for i:=1 to 26 do
if (BLog[i]=true) and (ALog[i]=false)
then D2Log[i]:=true
else D2Log[i]:=false;
{D3:=D1+D2}
for i:=1 to 26 do
D3Log[i]:=D1Log[i] or D2Log[i];
{D:=D3-C}
for i:=1 to 26 do
if (D3Log[i]=true) and (CLog[i]=false)
then DLog[i]:=true
else DLog[i]:=false;
write ('Њ­®¦Ґбвў® Ђ --> '); VIVODarraylog (ALog,26);
write ('Њ­®¦Ґбвў® B --> '); VIVODarraylog (BLog,26);
write ('Њ­®¦Ґбвў® C --> '); VIVODarraylog (CLog,26);
write ('Њ­®¦Ґбвў® D --> '); VIVODarraylog (DLog,26);
readln;
clrscr;
writeln; writeln; writeln; writeln; writeln; writeln; writeln; writeln; writeln; writeln; writeln;
textcolor (red);
writeln (' Џ®ўв®аЁвм Їа®Ја ¬¬г? (¤  - «оЎ п Є« ўЁи , ­Ґв - n/N)');
p:=readkey;
textcolor (lightgray);
until (p='n') or (p='N');
End.
Соседние файлы в папке LAB4