Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб1.doc
Скачиваний:
1
Добавлен:
16.04.2019
Размер:
579.07 Кб
Скачать
  1. Алгоритм (входные данные, выходные данные)

С клавиатуры вводятся значения функции.

Если значение всех уравнений равно нулю, то результат «1».

Проверяем все возможные варианты склеек.

Если я чейка 1,2,3,4 равны единице, то в результат записываем not(x1), при этом увеличиваем a[9].

Если ячейки 5,6,7,8 равны единице, то в результат идет x1, при этом увеличиваем a[10].

Если ячейки 1,2,5,6 равны единице, то в результат записываем not(x2), увеличиваем a[11].

Если ячейки 2,3,6,7 равны единице, то результат x3, увеличиваем a[12].

Если ячейки номер 3,4,7,8 равны единице, в результат x2, увеличиваем a[13].

Если ячейки 4,8,1,5 равны единице, в результат запишется not(x3), увеличиваем a[14].

Если ячейки 1,5 равны единице, а числа a[11] и a[14] равны нулю, то в ответ идет not(x3)not(x2).

Если ячейки 2,6 равны единице, а числа a[11], a[12] равны нулю, в ответ запишем x3not(x2).

Если ячейки 3,7 равны единице, а числа a[12], a[14] равны нулю, то запишем x2x3.

Если ячейки 4,8 равны единице, а числа a[13], a[14] равны нулю, то в ответ запишем not(x3)x2.

Если ячейки 1,4 равны единице, а числа a[9], a[14] равны нулю, то в результат запишем not(x1)not(x3).

И т.д.

  1. Анализ результатов

Результаты получились верные. Правильность результатов проверена другими методами.

  1. Вывод

Метод Карно является самым простым и понятным. Решение этим методом занимает меньше времени по сравнению с остальными методами. Программа использует алгоритм карт Карно для минимизации функции.

  1. Приложение (листинг программы)

uses crt;

var a : array[1..256] of integer;

i,c: integer;

procedure vvv;

begin

if c=1 then

write(' v ');

if c=0 then

inc(c);

end;

procedure obr(var c1,c2,c3,c4,ci:integer; t:string);

begin

if (c1=1) and (c2=1) and (c3=1) and (c4=1) then

begin

vvv;

write(t);

inc(ci);

end;

end;

procedure obr1(var c1,c2,c3,c4,ci:integer; t:string);

begin

if (c1=1) and (c2=1) and (c3=1) and (c4=1) then

begin

write(t);

inc(ci);

inc(c);

end;

end;

procedure obr2(var c1,c2,c3,c4:integer; t:string);

begin

if (c1=1) and (c2=1) and (c3=0) and (c4=0) then

begin

vvv;

write(t);

end;

end;

begin

clrscr;

writeln('Metod kart Karno:');

writeln;

for i:=1 to 8 do

begin

writeln('Vvedite rezultat funkcii ', i,':');

readln(a[i]);

end;

c:=a[3]; a[3]:=a[4]; a[4]:=c;

c:=a[8]; a[8]:=a[7]; a[7]:=c;

c:=0;

writeln;

write('f(x1,x2,x3)=');

if (a[1]=1) and (a[2]=1) and (a[3]=1) and (a[4]=1) and (a[5]=1) and

(a[6]=1) and (a[7]=1) and (a[8]=1) then

begin

writeln('1');

exit;

end;

obr1(a[1],a[2],a[3],a[4],a[9],'not(x1)');

obr1(a[5],a[6],a[7],a[8],a[10],'x1');

obr(a[1], a[2], a[5], a[6], a[11], 'not(x2)');

obr(a[2], a[3], a[6], a[7], a[12], 'x3');

obr(a[3], a[4], a[7], a[8], a[13], 'x2');

obr(a[4], a[8], a[1], a[5], a[14], 'not(x3)');

obr2(a[1],a[5],a[11],a[14], 'not(x3)not(x2)');

obr2(a[2],a[6],a[11],a[12], 'x3not(x2)');

obr2(a[3],a[7],a[12],a[13], 'x3x2');

obr2(a[4],a[8],a[13],a[14], 'not(x3)x2');

obr2(a[1],a[4],a[9],a[14], 'not(x1)not(x3)');

obr2(a[5],a[8],a[10],a[14], 'x1not(x3)');

obr2(a[1],a[2],a[9],a[11], 'not(x1)not(x2)');

obr2(a[2],a[3],a[9],a[12], 'not(x1)x3');

obr2(a[3],a[4],a[9],a[13], 'not(x1)x2');

obr2(a[5],a[6],a[10],a[11], 'x1not(x2)');

obr2(a[6],a[7],a[10],a[12], 'x1x3');

obr2(a[7],a[8],a[10],a[13], 'x1x2');

readkey;

end.

Метод Квайна

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]