Подправить программу. Вывод арифметических операций по запросу - Prolog
Формулировка задачи:
Помогите пожалуйста подправить программу, чтобы арифметические операции запрашивались, например сумма, затем ввод чисел и вывод результата и чтобы соблюдалось условие:если первое число 0 то программа завершается.
Листинг программы
- project "lab3.1"
- domains
- X,Y,Z,K,S,R,P,D=integer
- predicates
- sum(integer,integer,integer,integer,integer)
- raz(integer,integer,integer,integer,integer)
- proizv(integer,integer,integer,integer,integer)
- del(integer,integer,integer,integer,integer)
- clauses
- sum(X,Y,Z,K,S):-S=X+Y+Z+K.
- raz(X,Y,Z,K,R):-R=X-Y-Z-K.
- proizv(X,Y,Z,K,P):-P=X*Y*Z*K.
- del(X,Y,Z,K,D):-D=X/Y/Z/K.
- goal
- write("chislo1"),
- readint(X),
- write("chislo2"),
- readint(Y),
- write("chislo3"),
- readint(Z),
- write("chislo4"),
- readint(K),
- sum(X,Y,Z,K,S),Write("sum=",S),nl,
- raz(X,Y,Z,K,R),Write("raz=",R),nl,
- proizv(X,Y,Z,K,P),Write("proizv=",P),nl,
- del(X,Y,Z,K,D),Write("del=",D),nl.
Решение задачи: «Подправить программу. Вывод арифметических операций по запросу»
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) происходит взаимодействие с пользователем. Сначала пользователю предлагается ввести пять чисел, затем оператор, после чего выполняется соответствующая операция и выводится результат. При этом, если первое число равно нулю, цикл прерывается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д