Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
20
Добавлен:
28.06.2014
Размер:
7 Кб
Скачать
{ЋЇҐа жЁЁ ­ ¤ ¬­®¦Ґбвў ¬Ё}
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