Написать программу для построения таблицы истинности логической функции F - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Выручайте, ребята! Написать программу для построения таблицы истинности логической функции F. Логическая функция должна быть реализована в качестве функции, принимающей в качестве параметров значения X1 - X4. Нулевые значения соответствуют логическому значению "ЛОЖЬ", а ненулевые - "ИСТИНА". Таблица истинности должна быть выведена в следующем виде:
X1
X2
X3
X4
F
         
Логическая функция: - это задание. А это код, который смог сделать, но доделать под задание свое не смог
Листинг программы
  1. program lab_4;
  2. uses crt;
  3. var{описание переменных }
  4. x1,x2,x3,x4:integer;{ integer - целое число }
  5. f:array[1..10] of boolean;{array - массив boolean - логический тип }
  6. i:integer;{ integer - целое число }
  7. {}
  8. function p1(q1,q2:boolean):boolean;{p1-Штрих Шеффера}{ функция function p1(q1,q2:boolean):boolean;}
  9. begin{начинаем }
  10. p1:=not (q1 and q2);{p1-это q1|q2}{присваеваем переменной "p1" значение "not (q1 and q2)"}
  11. end;{заканчиваем }
  12. function p2(q1,q2:boolean):boolean;{p2-Плюсик в круге}{ функция function p2(q1,q2:boolean):boolean;}
  13. begin{начинаем }
  14. p2:=q1 and not q2 or q2 and not q1;{}{присваеваем переменной "p2" значение "q1 and not q2 or q2 and not q1"}
  15. end;{заканчиваем }
  16. function p3(q1,q2:boolean):boolean;{p3-Эквивалентность}{ функция function p3(q1,q2:boolean):boolean;}
  17. begin{начинаем }
  18. p3:=not q1 and not q2 or q2 and q1;{}{присваеваем переменной "p3" значение "not q1 and not q2 or q2 and q1"}
  19. end;{заканчиваем }
  20. {}
  21. { Производим колькуляцию, создаем матрицу.}{}
  22. procedure CalculateBools;{ процедура procedure CalculateBools;}
  23. begin{начинаем }
  24. f[1]:=x1=1;{присваеваем переменной "f[1]" значение "x1=1"}
  25. f[2]:=x2=1;{присваеваем переменной "f[2]" значение "x2=1"}
  26. f[3]:=x3=1;{присваеваем переменной "f[3]" значение "x3=1"}
  27. f[4]:=x4=1;{присваеваем переменной "f[4]" значение "x4=1"}
  28. f[5]:=p1(f[3],f[1]);{присваеваем переменной "f[5]" значение "p1(f[3],f[1])"}
  29. f[6]:=p2(f[5],f[2]);{присваеваем переменной "f[6]" значение "p2(f[5],f[2])"}
  30. f[7]:=p1(f[4],f[2]);{присваеваем переменной "f[7]" значение "p1(f[4],f[2])"}
  31. f[8]:=p3(f[3],f[7]);{присваеваем переменной "f[8]" значение "p3(f[3],f[7])"}
  32. f[9]:=p2(f[6],f[8]);{присваеваем переменной "f[9]" значение "p2(f[6],f[8])"}
  33. f[10]:=p2(f[9],f[2]);{присваеваем переменной "f[10]" значение "p2(f[9],f[2])"}
  34. {}
  35. {}
  36. end;{заканчиваем }
  37. {}
  38. {-Основная программа-}{}
  39. begin{начинаем }
  40. writeln('x1',' ','x2',' ','x3',' ','x4',' ',' =F');{выводим сообщение 'x1'}
  41. for x1:=0 to 1 do{цикл от x1:=0 до 1 }
  42. for x2:=0 to 1 do{цикл от x2:=0 до 1 }
  43. for x3:=0 to 1 do{цикл от x3:=0 до 1 }
  44. for x4:=0 to 1 do{цикл от x4:=0 до 1 }
  45. begin{начинаем }
  46. CalculateBools;{CalculateBools;}
  47. if f[10] then i:=1 else i:=0;{иначе}
  48. writeln(x1,' ',x2,' ',x3,' ',x4,' ',i);{выводим сообщение x1}
  49. end;{заканчиваем }
  50. readln;{ждем ввода }
  51. end.{заканчиваем }

Решение задачи: «Написать программу для построения таблицы истинности логической функции F»

textual
Листинг программы
  1. function p(q1, q2: boolean): boolean;{p - стрелка Пирса}
  2. begin
  3.   p := not (q1 or q2)
  4. end;
  5.  
  6. function f(x1, x2, x3, x4: boolean): boolean;
  7. begin
  8.   f := (x2 and x1) or x1 or p(x3, x4) xor (x2 <= x3)
  9. end;
  10.  
  11. var x1, x2, x3, x4: boolean;
  12.  
  13. begin
  14.  writeln('X1':7, 'X2':7, 'X3':7, 'X4':7, 'F':7);
  15.  for x1 := false to true do
  16.    for x2 := false to true do
  17.      for x3 := false to true do
  18.        for x4 := false to true do
  19.          writeln(ord(X1):7, ord(X2):7, ord(X3):7, ord(X4):7, ord(f(x1, x2, x3, x4)):7);
  20.  readln
  21. end.

Объяснение кода листинга программы

  1. Функция p(q1, q2: boolean): boolean; — определяет логическую функцию Пирса
  2. Функция f(x1, x2, x3, x4: boolean): boolean; — определяет логическую функцию F
  3. Переменные x1, x2, x3, x4: boolean; — используются для передачи значений аргументов в функции
  4. Цикл for x1 := false to true do... — перебирает все возможные значения переменных x1
  5. Цикл for x2 := false to true do... — перебирает все возможные значения переменных x2
  6. Цикл for x3 := false to true do... — перебирает все возможные значения переменных x3
  7. Цикл for x4 := false to true do... — перебирает все возможные значения переменных x4
  8. Вывод на экран значений переменных X1, X2, X3, X4 и F с помощью функции writeln
  9. Чтение строки с помощью функции readln
  10. Программа выполняется до тех пор, пока не будет введено значение или пока не будет достигнуто условие окончания цикла

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы