Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Check the Lisp program below and make sure it behaves as same as the given instruction and make the necessary adjusments needed. THE CODE: (

Check the Lisp program below and make sure it behaves as same as the given instruction and make the necessary adjusments needed.
THE CODE:
(defun simplify-arithmetic-expression (expression)
(let ((simplified (format nil "~{~a~^+ ~}" expression)))
simplified))
(defun evaluate-arithmetic-expression (expression values)
(let*((tokens (split-sequence:split-sequence #\+ expression))
(evaluated-tokens (mapcar (lambda (token)
(eval (read-from-string token))) tokens))
(result (apply #'+ evaluated-tokens)))
(format t "Expression value: ~a~%" result)))
(defun main ()
(loop
(format t "Enter arithmetic expression: ")
(let ((input (read-line)))
(cond ((string= input "quit")
(format t "Good Bye!~%")
(return))
(t
(let*((simplified (simplify-arithmetic-expression (split-sequence:split-sequence-if #'(lambda (char)(member char '(#\+ #\-))) input))))
(format t "Simplification: ~a~%" simplified)
(format t "Evaluate(y/n)?")
(let ((decision (read-line)))
(cond ((string= decision "y")
(format t "Provide variable values~%")
(let ((values (make-hash-table)))
(loop for var in (remove-duplicates (remove-if-not #'alpha-char-p (coerce simplified 'list)))
do (progn (format t "~a : " var)
(setf (gethash var values)(read))))
(evaluate-arithmetic-expression input 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: 2x +13+ y - x
The expression should be a linear combination of single letter variables. The program will then simplify the expression:
> exeval
Enter arithmetic expression: 2x +13+ y - x
Simplification: x + y +13
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: 2x +13+ y - x
Simplification: x + y +13
Evaluate? y
Provide variable values
x : 1
y : 3
Expression value: 18
***
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: 2x +13+ y - x
Simplification: x + y +13
Evaluate? n
***
Enter arithmetic expression:
The program will quit with command 'quit' enter at the expression prompt:
> exeval
Enter arithmetic expression: 2x +13+ y - x
Simplification: x + y +13
Evaluate? n
***
Enter arithmetic expression: quit
Good Bye!
(PLZ include screenshots of the execution the program)

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Beyond Big Data Using Social MDM To Drive Deep Customer Insight

Authors: Martin Oberhofer, Eberhard Hechler

1st Edition

0133509796, 9780133509793

More Books

Students also viewed these Databases questions