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.