Výpočet funkcie logických obvodov pomocou karnafovej mapy
Delphi & Pascal (česká wiki)
Kategória: KMP (Klub mladých programátorov)
Autor: Ján Benkovič
web: www.tbteacher.host.sk
Program: Karnaf.pas
Súbor exe: Karnaf.exe
Autor: Ján Benkovič
web: www.tbteacher.host.sk
Program: Karnaf.pas
Súbor exe: Karnaf.exe
Výpočet funkcie logických obvodov pomocou karnafovej mapy.
{ 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.