Question: Check the Lisp program below and make sure it behaves as same as the given instruction and make the necessary adjusments if needed. THE CODE:
Check the Lisp program below and make sure it behaves as same as the given instruction and make the necessary adjusments if needed.
THE CODE:
defun simplifyarithmeticexpression expression
letsimplified removeif #lambda charchar char #space expression
terms splitsequence:splitsequence # simplified
simplifiedterms mapcar #lambda term
stringtrim term
terms
finalsimplified format nil ~~a~ ~ simplifiedterms
finalsimplified
defun evaluatearithmeticexpression expression values
lettokens splitsequence:splitsequence # expression
evaluatedtokens mapcar #lambda token
eval readfromstring token
tokens
result apply # evaluatedtokens
format t "Expression value: ~a~ result
defun main
loop
format t "Enter arithmetic expression:
let input readline
cond string input "quit"
format t "Good Bye!~
return
t
letsimplified simplifyarithmeticexpression input
if string simplified "INVALID"
progn
format t "Invalid expression. Please enter a valid arithmetic expression.~
return
progn
format t "Simplification: ~a~ simplified
format t "Evaluate yn
let decision readline
cond string decision y
format t "Provide variable values~
let values makehashtable :test 'equal
loop for var across removeduplicates removeifnot #'alphacharp coerce simplified 'list
do progn format t ~a: var
setf gethash var valuesread
evaluatearithmeticexpression simplified values
string decision n
format t ~
t format t "Invalid choice.~
main
THE INSTRUCTION :
Create a program for the simplification and evaluation of arithmetic expressions. The program, when executed, should prompt the user to enter an arithmetic expression:
exeval
Enter arithmetic expression: x y x
The expression should be a linear combination of single letter variables. The program will then simplify the expression:
exeval
Enter arithmetic expression: x y x
Simplification: x y
and then will ask whether to evaluate the expression. If the answer is y then it will prompt for values for each of the variables and evaluate the expression:
exeval
Enter arithmetic expression: x y x
Simplification: x y
Evaluate? y
Provide variable values
x :
y :
Expression value:
Enter arithmetic expression:
then ask for a new expression to evaluate. If the answer is n then it will simply ask for a new expression to evaluate:
exeval
Enter arithmetic expression: x y x
Simplification: x y
Evaluate? n
Enter arithmetic expression:
The program will quit with command 'quit' enter at the expression prompt:
exeval
Enter arithmetic expression: x y x
Simplification: x y
Evaluate? n
Enter arithmetic expression: quit
Good Bye!
PLZ include screenshots of the execution the program for assurance.
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
