Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ СДНФ

Автор: Single 23.02.2009 17:09

Не знаю даже с чего начать sad.gif

Задача. Написать задачу для булевой функции, для 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

Спасибо большое, программа работает smile.gif