Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (
- Codigo em LikeForth
- )
- : inverte (a b c -- c b a) SWAP 2 ROLL ;
- : delta (a b c -- SQRT(b * b - 4 * a * c))
- SWAP DUP * ( a b c -> b*b a c)
- ROT * 4 * ( -> 4*a*c b*b )
- - ( -> b*b - 4*a*c )
- DUP
- 0 < NOT
- IF
- SQRT ( se delta >= 0, SQRT(delta) )
- ELSE
- DROP -1 ( senao deixa soh -1 na pilha )
- THEN
- ;
- : raiz1 (a b c -- -b/2a ) 2 * SWAP -1 * / ;
- : raiz2 (a b c -- (-b+-SQRT(b*b-4*a*c))/2a )
- DUP 2 *
- 3 ROLL 3 ROLL 3 ROLL
- 1 PICK
- -1 *
- 3 ROLL 3 ROLL 3 ROLL
- delta
- SWAP
- 1 PICK 1 PICK
- SWAP - >R
- SWAP + >R
- DUP R> SWAP / SWAP
- R> SWAP /
- ;
- : raizes ( a b c -- 0,1ou2 raizes na pilha )
- 3 DO 2 PICK LOOP
- delta
- DUP 0 =
- IF ( se delta == 0, 1 raiz )
- DROP raiz1
- SWAP DROP
- ELSE
- 0 >
- IF ( se delta > 0, 2 raizes )
- raiz2
- ELSE ( senao, pilha vazia )
- BEGIN DROP EMPTY UNTIL
- THEN
- THEN
- ;
- (--
- Le 3 valores do teclado e resolve
- a eq de 2o grau correspondente.
- Marco Cristo, 2014, Compiladores
- --)
- ."valor de a: " ?
- ."valor de b: " ?
- ."valor de c: " ?
- inverte
- raizes
- EMPTY
- IF
- ."Nao ha solucoes!" CR
- ELSE
- ."Raiz 1: " . CR
- EMPTY NOT
- IF
- ."Raiz 2: " . CR
- THEN
- THEN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement