Probleme LISP Lab 8

Published on February 2017 | Categories: Documents | Downloads: 73 | Comments: 0 | Views: 415
of 3
Download PDF   Embed   Report

Comments

Content

1. Să se scrie rezolve o ecuaţie de gradul I cu a<>0.
(defun ec(a b c)
(if (zerop a) "a trebuie sa fie diferit de 0" (/ (- c b) a))
)
2.

Să se scrie rezolve o ecuaţie de gradul II cu a<>0.

(defun ec2(a b c)
(if (zerop a) "a<>0"
(list (/ (+ (- b) (sqrt (- (* b b) (* 4 a c)))) (* 2 a))
(/ (- (- b) (sqrt (- (* b b) (* 4 a c)))) (* 2 a))))
)

3. Grade in radiani
(defun r (n)
(/ (* n pi) 180))

4. Radiani in grade
(defun r-to-g (n)
(/ (* 180 n) 3.14))

5. Să se scrie o funcţie care transformă gradele Fahrenheit în grade Celsius.
(defun f-to-c (temp)
(/ (- temp 32) 1.8)
)

6. Sa se calculeze mn
(defun putere(m n)
(if (= n 0) 1 (* m (putere m (- n 1))))
)

7. Sa se calculeze n!
(defun factorial(n)
(if (= n 0) 1 (* n (factorial (- n 1))))
)

8. Să se scrie o funcţie care calculează Combinări de n luate câte k, n,k naturale, k<=n.
(defun combinari(n k)
(/ (factorial n) (* (factorial (- n k)) (factorial k)))
)

9. Sa se testeze daca este divizibil a cu 5?
(defun divizibil(a)
(integerp(/ a 5)))

10. Să se scrie o funcţie care la introducerea unui unghi întoarce cadranul în care se află
acesta.
(defun cadran(a)
(if (or (< a 0) (>= a 360)) "Numarul trebuie sa fie intre 0 si 360"
(if (<= a 90) "Cadranul 1"
(if (and (<= a 180) (> a 90)) "Cadranul 2"
(if (and (<= a 270) (> a 180)) "Cadranul 3"
"Cadranul 4"
)))))

11. Să se scrie o funcţie care transformă gradele Fahrenheit în grade Celsius.
(defun f-to-c (temp)
(/ (- temp 32) 1.8)
)

LISTE
12. Reuniunea a doua multimi.
(defun reuniune(x y)
(cond ((endp x) y)
((member (first x) y)
(reuniune(rest x)y))
(T(cons (first x)
(reuniune (rest x) y )))))

13. Diferenta a doua multimi
(defun diferenta(x y)
(cond ((null x) NIL)
((member (first x) y)
(diferenta(rest x)y))
((cons(first x)
(diferenta(rest x)y)))))

14. Verifica daca multimile sunt disjuncte
(defun disjunct(x y)
(cond ((null x) T)
((member (car x) y) NIL)
((disjunct (rest x)y))))

ARBORI
15. Funcţie care returneaza subarborele stâng
(defun arbstang (l)
( cond ((null l) nil)
((= 1 (length l)) nil)
(t (cadr l))))

16. Funcţie care returneaza subarborele drept
(defun arbdrept (l)
( cond ((null l) nil)
((= 1 (length l)) nil)
(t (caddr l))))

17. Funcţie care calculează adâncimea maxima a unui arbore dat
(defun adancime (l)
(if (= 1 (length l))
1
( let(
(a (adancime (arbstang l)))
(b (adancime (arbdrept l))))
( cond ((< a b)(+ b 1))
(t (+ a 1)))
) ; de la let
) ; de la if
)

18. Funcţie care returneaza varful arborelui
(defun headarb (l)
( car l))

19. Funcţie care verifica daca un anumit nod este in arbore
(defun search_key (key l)
( cond (( null l) nil )
( (= key (headarb l)) t )
( (search_key key (arbstang l)) t)
( (search_key key (arbdrept l)) t)
( t nil)))
(defun cauta_key (key l)
(cond ((search_key key l)
(princ '|gasit|))
(t (princ '|negasit|))))

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close