Lisp e Bhaskara II

Pro pessoal que se interessou na primeira parte do artigo, eu acrescentei duas funções que permitem a entrada da equação como strings, está meio POG, mas funciona.

O próximo passo é implementar um loop que pergunte a equação e se repita.

Nota 1: Mesmo que a=1, ele deve aparecer na string.
Nota 2: Os sinais de b e c devem estar ‘grudados’ (sem espaço neles)
Nota 3: ‘ = 0’ é opcional.

Exemplo:

(solve-equation "1x² -4x +4 = 0")

O código dessa nova função é:

(defun parse-string (str)
  (let* ((equation (remove #\x (remove #\² str)))
         (end-a (position #\SPACE equation))
         (a (read-from-string (subseq equation 0 end-a)))
         (end-b (position #\SPACE (subseq equation (+ 1 end-a))))
         (b (read-from-string (subseq (subseq equation (+ 1 end-a)) 0 end-b)))
         (end-c (position #\SPACE (subseq (subseq equation (+ 1 end-a)) 
                                          (+ 1 end-b))))
         (c (read-from-string (subseq (subseq (subseq equation (+ 1 end-a))
                                              (+ 1 end-b))
                                      0 end-c))))
    (list a b c)))

(defun solve-equation (str)
  (let* ((abc (parse-string str))
         (a (first abc))
         (b (second abc))
         (c (third abc)))
    (say-results a b c)))
Publicidade

Uma resposta para “Lisp e Bhaskara II

  1. Pingback: Lisp e Bhaskara « Aletéia

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: