Advertisement
Valemmil

Untitled

Oct 13th, 2023
1,056
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.32 KB | Source Code | 0 0
  1. ; задание уравнения в виде списка
  2. (setq meEquation '(A * x = B))
  3. ; выделение левой части относительно символа op
  4. (defun left(e op)
  5.     (if e
  6.         (let ((f (first e)))
  7.             (if (eq f op) nil
  8.                 (cons f (left (rest e) op))
  9.             )
  10.         )
  11.         nil
  12.      )
  13. )
  14.  
  15. ; выделение правой части относительно символа op
  16. (defun right(e op)
  17.     (if e
  18.         (let ((r (rest e)))
  19.             (if (eq (first e) op) r
  20.                 (right r op)
  21.             )
  22.         )
  23.         nil
  24.     )
  25. )
  26.  
  27. ; решение уравнения
  28. (defun res(e)
  29.     (let ((l (left e '=)))
  30.         (if l
  31.             (let(
  32.                  (r (first (right e '=)))
  33.                  (k (first (left l '*)))
  34.                  (var (first (right l '*)))
  35.                 )
  36.                 (if (and r k var)
  37.                     (list var '= r '/ k)
  38.                     nil
  39.                 )
  40.             )
  41.             nil
  42.         )
  43.     )
  44. )
  45.  
  46. ; вывод сообщения об ошибке при неправильно заданном уравнении
  47. (defun res2(e)
  48.     (let ((r (res e)))
  49.         (if r r "Ошибка")
  50.     )
  51. )
  52.  
  53. ; вывод результата решения
  54. (print (res2 meEquation))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement