Answered step by step
Verified Expert Solution
Question
1 Approved Answer
I ' m having an issue with correctly simplifying the arithmetic expression in the Lisp code below could you help solve the issue? The description
Im having an issue with correctly simplifying the arithmetic expression in the Lisp code below could you help solve the issue? The description of the program and the code are included PLZ add a screenshot of the code running properly
THE DESCRIPTION :
Create a LISP program for the simplification and evaluation of arithmetic expressions
PEMDAS
The program, when executed, should prompt the user to enter an arithmetic expressions
Enter arithmetic expression: The expression should be a linear combination of single letter variables. The program will then simplify the expression like below:
Enter arithmetic expression: x y x
Simplification: x y
and then it 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, then ask for a new expression to evaluate. If the answer is n then it will simply ask for a new expression to evaluate. The program will quit with command 'quit' entered at the expression prompt.
Example of IOin the case of y:
Enter arithmetic expression: x y x
Simplification: x y
Evaluate? y
Provide variable values
x :
y :
Expression value:
Enter arithmetic expression:
THE CODE:
defun simplifyexpression expr
"Function to simplify arithmetic expression"
letterms splitsequence:splitsequence # expr
simplifiedterms mapcar #lambda term
stringtrim term
terms
finalsimplified format nil ~~a~ ~ simplifiedterms
finalsimplified
defun evaluateexpression expr values
"Function to evaluate arithmetic expression"
lettokens splitsequence:splitsequence # expr
evaluatedtokens mapcar #lambda token
eval readfromstring token
tokens
result apply # evaluatedtokens
result
defun main
"Main function to run the program"
format t "Enter arithmetic expression or 'quit' to exit:~
loop
format t
finishoutput
let input readline
if string input "quit"
progn
format t "Good Bye!~
return
letsimplified simplifyexpression input
format t "Simplification: ~a~ simplified
format t "Evaluate? yn:
finishoutput
let choice chardowncase readchar
cond
char choice #y
letvars removeduplicates removeifnot #'alphacharp coerce simplified 'list
format t "Provide variable values~
let values makehashtable :test 'equal
loop for var in vars do
progn format t ~a: var
setf gethash var valuesread
format t "Expression value: ~a~~evaluateexpression simplified values
char choice #
nothing
t format t ~
main
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started