Подправить программу. Вывод арифметических операций по запросу - Prolog

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

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

Помогите пожалуйста подправить программу, чтобы арифметические операции запрашивались, например сумма, затем ввод чисел и вывод результата и чтобы соблюдалось условие:если первое число 0 то программа завершается.
Листинг программы
  1. project "lab3.1"
  2. domains
  3. X,Y,Z,K,S,R,P,D=integer
  4. predicates
  5. sum(integer,integer,integer,integer,integer)
  6. raz(integer,integer,integer,integer,integer)
  7. proizv(integer,integer,integer,integer,integer)
  8. del(integer,integer,integer,integer,integer)
  9. clauses
  10. sum(X,Y,Z,K,S):-S=X+Y+Z+K.
  11. raz(X,Y,Z,K,R):-R=X-Y-Z-K.
  12. proizv(X,Y,Z,K,P):-P=X*Y*Z*K.
  13. del(X,Y,Z,K,D):-D=X/Y/Z/K.
  14. goal
  15. write("chislo1"),
  16. readint(X),
  17. write("chislo2"),
  18. readint(Y),
  19. write("chislo3"),
  20. readint(Z),
  21. write("chislo4"),
  22. readint(K),
  23. sum(X,Y,Z,K,S),Write("sum=",S),nl,
  24. raz(X,Y,Z,K,R),Write("raz=",R),nl,
  25. proizv(X,Y,Z,K,P),Write("proizv=",P),nl,
  26. del(X,Y,Z,K,D),Write("del=",D),nl.

Решение задачи: «Подправить программу. Вывод арифметических операций по запросу»

textual
Листинг программы
  1. predicates
  2. sum(integer,integer,integer,integer,integer)
  3. sub(integer,integer,integer,integer,integer)
  4. mul(integer,integer,integer,integer,integer)
  5. div(integer,integer,integer,integer,integer)
  6. oper(char,integer,integer,integer,integer,integer)
  7. ask
  8. vivod(integer,integer,integer,integer)
  9.  
  10. clauses
  11.  
  12. sum(X,Y,V,F,Z) :- Z=X+Y+V+F.
  13. sub(X,Y,V,F,Z) :- Z=X-Y-V-F.
  14. mul(X,Y,V,F,Z) :- Z=X*Y*V*F.
  15. div(X,Y,V,F,Z) :- Z=X/Y/V/F.
  16.  
  17. oper(O,X,Y,V,F,Z) :- O='+',sum(X,Y,V,F,Z).
  18. oper(O,X,Y,V,F,Z) :- O='-',sub(X,Y,V,F,Z).
  19. oper(O,X,Y,V,F,Z) :- O='*',mul(X,Y,V,F,Z).
  20. oper(O,X,Y,V,F,Z) :- O='/',div(X,Y,V,F,Z).
  21.  
  22.  
  23. ask :-
  24.  write("chislo1="),readint(X),
  25.  write("chislo2="),readint(Y),
  26.  write("chislo3="),readint(V),
  27.  write("chislo4="),readint(F),
  28.  write("op="),readchar(OP),nl,oper(OP,X,Y,V,F,Z),write(X),write(OP),write(Y),write(OP),write(V),write(OP),write(F),write("="),write(Z),nl,vivod(X,Y,V,F).
  29.        vivod(X,Y,V,F):-X=0.

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

В представленном коде на языке Prolog имеется несколько утверждений (predicates) и правил (clauses) для выполнения арифметических операций и обработки пользовательского ввода.

  1. Утверждения (predicates):
    • sum(X, Y, V, F, Z) - результат сложения пяти чисел
    • sub(X, Y, V, F, Z) - результат вычитания пяти чисел
    • mul(X, Y, V, F, Z) - результат умножения пяти чисел
    • div(X, Y, V, F, Z) - результат деления пяти чисел
    • oper(O, X, Y, V, F, Z) - выполняет операцию, указанную в переменной O, над пятью числами
    • vivod(X, Y, V, F) - вывод результата арифметической операции
  2. Правила (clauses):
    • sum(X, Y, V, F, Z) :- Z = X + Y + V + F - оператор сложения
    • sub(X, Y, V, F, Z) :- Z = X - Y - V - F - оператор вычитания
    • mul(X, Y, V, F, Z) :- Z = X Y V * F - оператор умножения
    • div(X, Y, V, F, Z) :- Z = X / Y / V / F - оператор деления
    • oper(O, X, Y, V, F, Z) :- O = '+', sum(X, Y, V, F, Z) - выполнение операции сложения
    • oper(O, X, Y, V, F, Z) :- O = '-', sub(X, Y, V, F, Z) - выполнение операции вычитания
    • oper(O, X, Y, V, F, Z) :- O = '*', mul(X, Y, V, F, Z) - выполнение операции умножения
    • oper(O, X, Y, V, F, Z) :- O = '/', div(X, Y, V, F, Z) - выполнение операции деления
    • ask :- блок кода для взаимодействия с пользователем
      • считывание пяти чисел
      • считывание оператора
      • выполнение операции
      • вывод результата операции
      • проверка на ноль для выхода из цикла В основном блоке кода (ask) происходит взаимодействие с пользователем. Сначала пользователю предлагается ввести пять чисел, затем оператор, после чего выполняется соответствующая операция и выводится результат. При этом, если первое число равно нулю, цикл прерывается.

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


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

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

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

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

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

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