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

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

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

Помогите пожалуйста подправить программу, чтобы арифметические операции запрашивались, например сумма, затем ввод чисел и вывод результата и чтобы соблюдалось условие:если первое число 0 то программа завершается.

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

textual
Листинг программы
predicates
sum(integer,integer,integer,integer,integer)
sub(integer,integer,integer,integer,integer)
mul(integer,integer,integer,integer,integer)
div(integer,integer,integer,integer,integer)
oper(char,integer,integer,integer,integer,integer)
ask
vivod(integer,integer,integer,integer)
 
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 :-
 write("chislo1="),readint(X),
 write("chislo2="),readint(Y),
 write("chislo3="),readint(V),
 write("chislo4="),readint(F),
 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).
       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
Похожие ответы