Подправить программу. Вывод арифметических операций по запросу - 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) для выполнения арифметических операций и обработки пользовательского ввода.
- Утверждения (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) - вывод результата арифметической операции
- Правила (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) происходит взаимодействие с пользователем. Сначала пользователю предлагается ввести пять чисел, затем оператор, после чего выполняется соответствующая операция и выводится результат. При этом, если первое число равно нулю, цикл прерывается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д