Написать программу для построения таблицы истинности логической функции F - Free Pascal
Формулировка задачи:
Выручайте, ребята!
Написать программу для построения таблицы истинности логической функции F. Логическая функция должна быть реализована в качестве функции, принимающей в качестве параметров значения X1 - X4. Нулевые значения соответствуют логическому значению "ЛОЖЬ", а ненулевые - "ИСТИНА". Таблица истинности должна быть выведена в следующем виде:
Логическая функция:
- это задание.
А это код, который смог сделать, но доделать под задание свое не смог
X1 |
X2 |
X3 |
X4 |
F |
program lab_4; uses crt; var{описание переменных } x1,x2,x3,x4:integer;{ integer - целое число } f:array[1..10] of boolean;{array - массив boolean - логический тип } i:integer;{ integer - целое число } {} function p1(q1,q2:boolean):boolean;{p1-Штрих Шеффера}{ функция function p1(q1,q2:boolean):boolean;} begin{начинаем } p1:=not (q1 and q2);{p1-это q1|q2}{присваеваем переменной "p1" значение "not (q1 and q2)"} end;{заканчиваем } function p2(q1,q2:boolean):boolean;{p2-Плюсик в круге}{ функция function p2(q1,q2:boolean):boolean;} begin{начинаем } p2:=q1 and not q2 or q2 and not q1;{}{присваеваем переменной "p2" значение "q1 and not q2 or q2 and not q1"} end;{заканчиваем } function p3(q1,q2:boolean):boolean;{p3-Эквивалентность}{ функция function p3(q1,q2:boolean):boolean;} begin{начинаем } p3:=not q1 and not q2 or q2 and q1;{}{присваеваем переменной "p3" значение "not q1 and not q2 or q2 and q1"} end;{заканчиваем } {} { Производим колькуляцию, создаем матрицу.}{} procedure CalculateBools;{ процедура procedure CalculateBools;} begin{начинаем } f[1]:=x1=1;{присваеваем переменной "f[1]" значение "x1=1"} f[2]:=x2=1;{присваеваем переменной "f[2]" значение "x2=1"} f[3]:=x3=1;{присваеваем переменной "f[3]" значение "x3=1"} f[4]:=x4=1;{присваеваем переменной "f[4]" значение "x4=1"} f[5]:=p1(f[3],f[1]);{присваеваем переменной "f[5]" значение "p1(f[3],f[1])"} f[6]:=p2(f[5],f[2]);{присваеваем переменной "f[6]" значение "p2(f[5],f[2])"} f[7]:=p1(f[4],f[2]);{присваеваем переменной "f[7]" значение "p1(f[4],f[2])"} f[8]:=p3(f[3],f[7]);{присваеваем переменной "f[8]" значение "p3(f[3],f[7])"} f[9]:=p2(f[6],f[8]);{присваеваем переменной "f[9]" значение "p2(f[6],f[8])"} f[10]:=p2(f[9],f[2]);{присваеваем переменной "f[10]" значение "p2(f[9],f[2])"} {} {} end;{заканчиваем } {} {-Основная программа-}{} begin{начинаем } writeln('x1',' ','x2',' ','x3',' ','x4',' ',' =F');{выводим сообщение 'x1'} for x1:=0 to 1 do{цикл от x1:=0 до 1 } for x2:=0 to 1 do{цикл от x2:=0 до 1 } for x3:=0 to 1 do{цикл от x3:=0 до 1 } for x4:=0 to 1 do{цикл от x4:=0 до 1 } begin{начинаем } CalculateBools;{CalculateBools;} if f[10] then i:=1 else i:=0;{иначе} writeln(x1,' ',x2,' ',x3,' ',x4,' ',i);{выводим сообщение x1} end;{заканчиваем } readln;{ждем ввода } end.{заканчиваем }
Решение задачи: «Написать программу для построения таблицы истинности логической функции F»
textual
Листинг программы
function p(q1, q2: boolean): boolean;{p - стрелка Пирса} begin p := not (q1 or q2) end; function f(x1, x2, x3, x4: boolean): boolean; begin f := (x2 and x1) or x1 or p(x3, x4) xor (x2 <= x3) end; var x1, x2, x3, x4: boolean; begin writeln('X1':7, 'X2':7, 'X3':7, 'X4':7, 'F':7); for x1 := false to true do for x2 := false to true do for x3 := false to true do for x4 := false to true do writeln(ord(X1):7, ord(X2):7, ord(X3):7, ord(X4):7, ord(f(x1, x2, x3, x4)):7); readln end.
Объяснение кода листинга программы
- Функция p(q1, q2: boolean): boolean; — определяет логическую функцию Пирса
- Функция f(x1, x2, x3, x4: boolean): boolean; — определяет логическую функцию F
- Переменные x1, x2, x3, x4: boolean; — используются для передачи значений аргументов в функции
- Цикл for x1 := false to true do... — перебирает все возможные значения переменных x1
- Цикл for x2 := false to true do... — перебирает все возможные значения переменных x2
- Цикл for x3 := false to true do... — перебирает все возможные значения переменных x3
- Цикл for x4 := false to true do... — перебирает все возможные значения переменных x4
- Вывод на экран значений переменных X1, X2, X3, X4 и F с помощью функции writeln
- Чтение строки с помощью функции readln
- Программа выполняется до тех пор, пока не будет введено значение или пока не будет достигнуто условие окончания цикла
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д