Localize file www.TrSek.com/cover/benkovic/karnaf.pas{ 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.