


The program performs the following key functions:
A: 90–100
B: 80–89
C: 70–79
D: 60–69
F: below 60
Displays the results: individual scores, average score (formatted to 2 decimal places), and final letter grade.
Program:-
;; Student Grade Calculator
(defun calculate-grade (total)
(cond ((>= total 90) "A")
((>= total 80) "B")
((>= total 70) "C")
((>= total 60) "D")
(t "F")))
(defun get-valid-score (prompt min max)
(format t "~%~A (Enter score between ~D and ~D): " prompt min max)
(let ((score (read)))
(if (and (numberp score) (>= score min) (<= score max))
score
(progn
(format t "Invalid score! Please enter a number between ~D and ~D~%" min max)
(get-valid-score prompt min max)))))
(defun main ()
(format t "~%Welcome to Student Grade Calculator~%")
;; Get scores for different components
(let* ((assignment (get-valid-score "Enter Assignment score" 0 100))
(midterm (get-valid-score "Enter Midterm score" 0 100))
(final (get-valid-score "Enter Final exam score" 0 100))
;; Calculate weighted total
(total (/ (+ assignment midterm final) 3))
(final-grade (calculate-grade total)))
;; Display results
(format t "~%Results:~%")
(format t "Assignment Score: ~D~%" assignment)
(format t "Midterm Score: ~D~%" midterm)
(format t "Final Score: ~D~%" final)
(format t "Average Score: ~,2F~%" total)
(format t "Final Grade: ~A~%" final-grade)))
;; Run the program
(main)
Output: