Calculate logical circuit with karnaf map

Delphi & Pascal (èeská wiki)
Pøejít na: navigace, hledání
Category: KMP (Club of young programmers)

Author: Ján Benkoviè
web: www.tbteacher.host.sk

Program: Karnaf.pas
File exe: Karnaf.exe

Calculate logical circuit with karnaf map.
{ KARNAF.PAS                             Copyright (c) Jan Benkovic }
{ Vypocet funkcie logickych obvodov pomocou karnafovej mapy.        }
{                                                                   }
{ Datum:18.10.2001                             http://www.trsek.com }
 
uses crt;
var
 karnafova_mapa : array[1..2,1..2] of byte;
 cislo : byte;
 jednotka:byte;
 x,y : byte;
 
begin
 clrscr;
 jednotka:=0;
 Writeln('Zadavaj cisla do mapy');
 for x := 1 to 2 do
  for y := 1 to 2 do
   begin
    repeat
     Write('X : ',x,' Y : ',y,' : ');
     Readln(cislo);
    until (cislo=1) or (cislo=0);
    if cislo=1 then inc(jednotka);
    karnafova_mapa[x,y]:=cislo;
   end;
 Writeln('Dakujem, pokracujte lubovolnou klavesou.');
 readkey;
 Writeln;
 Writeln;
 Writeln;
 Writeln('Karnafova mapa :');
 Writeln;
 Writeln;
 Writeln('                A    ');
 Writeln('    ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄ¿');
 Writeln('    ³       ³       ³');
 Writeln('    ³   ',karnafova_mapa[1,2],'   ³   ',karnafova_mapa[2,2],'   ³');
 Writeln('    ³       ³       ³');
 Writeln('    ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄ´');
 Writeln('    ³       ³       ³');
 Writeln('  B ³   ',karnafova_mapa[1,1],'   ³   ',karnafova_mapa[2,1],'   ³');
 Writeln('    ³       ³       ³');
 Writeln('    ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÙ');
 Writeln;
 if jednotka=0 then Writeln('Vysledna funkcia je : 0');
 if jednotka=1 then
  begin
   if karnafova_mapa[1,1]=1 then Writeln('Vysledna funkcia je : An*B');
   if karnafova_mapa[1,2]=1 then Writeln('Vysledna funkcia je : An*Bn');
   if karnafova_mapa[2,2]=1 then Writeln('Vysledna funkcia je : A*Bn');
   if karnafova_mapa[2,1]=1 then Writeln('Vysledna funkcia je : A*B');
  end;
 if jednotka=2 then
  begin
   if (karnafova_mapa[1,1]=1)and(karnafova_mapa[2,1]=1) then Writeln('Vysledna funkcia je : B');
   if (karnafova_mapa[1,2]=1)and(karnafova_mapa[2,2]=1) then Writeln('Vysledna funkcia je : Bn');
   if (karnafova_mapa[2,2]=1)and(karnafova_mapa[2,1]=1) then Writeln('Vysledna funkcia je : A');
   if (karnafova_mapa[1,2]=1)and(karnafova_mapa[1,1]=1) then Writeln('Vysledna funkcia je : An');
   if (karnafova_mapa[1,2]=1)and(karnafova_mapa[2,1]=1) then Writeln('Vysledna funkcia je : An*Bn + A*B');
   if (karnafova_mapa[2,2]=1)and(karnafova_mapa[1,1]=1) then Writeln('Vysledna funkcia je : A*Bn + An*B');
  end;
 if jednotka=3 then
  begin
   if (karnafova_mapa[1,2]=1)and(karnafova_mapa[1,1]=1)and(karnafova_mapa[2,1]=1) then Writeln('Vysledna funkcia je : An+B');
   if (karnafova_mapa[1,2]=1)and(karnafova_mapa[2,2]=1)and(karnafova_mapa[2,1]=1) then Writeln('Vysledna funkcia je : A+Bn');
   if (karnafova_mapa[2,2]=1)and(karnafova_mapa[2,1]=1)and(karnafova_mapa[1,1]=1) then Writeln('Vysledna funkcia je : A+B');
   if (karnafova_mapa[1,1]=1)and(karnafova_mapa[1,2]=1)and(karnafova_mapa[2,2]=1) then Writeln('Vysledna funkcia je : An+Bn');
  end;
 if jednotka=4 then Writeln('Vysledna funkcia je : 1');
 readkey;
end.