Задача. Написать задачу для булевой функции, для 4 переменных, которая задана таблицей и вывести СДНФ. Значения задаёт пользователь, тоесть Компьютер выводит 0000 пользователь вводит 1. Вывести результат в виде f(x1,x2,x3,x4)=!x1,x2,x3,x4
volvo
23.02.2009 17:37
Ну, в данном случае все, что тебе нужно - это четырьмя циклами пробежаться по всем возможным значениям, и проверять, ввел в ответ пользователь 0 или 1. Если 0 - значит, тебя текущая комбинация не интересует. А если 1, то она должна присутствовать в СДНФ, и надо ее запомнить... Ну, вот так как-то:
const sign: array[0 .. 1] of string = ('!', ''); ... s := ''; for X1 := 0 to 1 do for X2 := 0 to 1 do for X3 := 0 to 1 do for X4 := 0 to 1 do begin write('F(', X1:2, X2:2, X3:2, X4:2, ') = '); readln(answer); if answer = 1 then s := s + (sign[X1]+'X1')+(sign[X2]+'X2')+ (sign[X3]+'X3')+(sign[X4]+'X4') + '+'; end; writeln('F(X1, X2, X3, X4) = ' + s);
- получишь СДНФ...
Single
23.02.2009 18:06
Спасибо большое, программа работает
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.