Advertisement
Guest User

Untitled

a guest
Dec 19th, 2014
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 1.32 KB | None | 0 0
  1. (
  2.   Codigo em LikeForth
  3. )
  4.  
  5.  
  6. : inverte (a b c -- c b a) SWAP 2 ROLL ;
  7.  
  8.  
  9.  
  10. : delta (a b c -- SQRT(b * b - 4 * a * c))
  11.   SWAP DUP *   ( a b c -> b*b a c)
  12.   ROT * 4 *    ( -> 4*a*c b*b )
  13.   -            ( -> b*b - 4*a*c )
  14.   DUP
  15.   0 < NOT    
  16.   IF        
  17.     SQRT       ( se delta >= 0, SQRT(delta) )
  18.   ELSE
  19.     DROP -1    ( senao deixa soh -1 na pilha )
  20.   THEN
  21. ;
  22.  
  23. : raiz1 (a b c -- -b/2a ) 2 * SWAP -1 * / ;
  24.  
  25.  
  26.  
  27.  
  28. : raiz2  (a b c -- (-b+-SQRT(b*b-4*a*c))/2a )
  29.   DUP 2 *
  30.   3 ROLL 3 ROLL 3 ROLL
  31.   1 PICK
  32.   -1 *
  33.   3 ROLL 3 ROLL 3 ROLL
  34.   delta
  35.   SWAP
  36.   1 PICK 1 PICK
  37.   SWAP - >R
  38.   SWAP + >R
  39.   DUP R> SWAP / SWAP
  40.   R> SWAP /
  41. ;
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49. : raizes ( a b c -- 0,1ou2 raizes na pilha )
  50.   3 DO 2 PICK LOOP
  51.   delta
  52.   DUP 0 =
  53.   IF           ( se delta == 0, 1 raiz )  
  54.     DROP raiz1      
  55.     SWAP DROP
  56.   ELSE
  57.     0 >
  58.     IF         ( se delta > 0, 2 raizes )
  59.       raiz2    
  60.     ELSE       ( senao, pilha vazia )
  61.       BEGIN DROP EMPTY UNTIL
  62.     THEN
  63.   THEN
  64. ;
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73. (--
  74.   Le 3 valores do teclado e resolve
  75.     a eq de 2o grau correspondente.
  76.     Marco Cristo, 2014, Compiladores
  77. --)
  78.  
  79. ."valor de a: " ?  
  80. ."valor de b: " ?  
  81. ."valor de c: " ?
  82. inverte
  83. raizes
  84.  
  85. EMPTY
  86. IF
  87.   ."Nao ha solucoes!" CR
  88. ELSE
  89.   ."Raiz 1: " . CR
  90.   EMPTY NOT
  91.   IF
  92.     ."Raiz 2: " . CR
  93.   THEN
  94. THEN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement