Advertisement
Tavi33

CFLP 12

May 20th, 2016
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 1.52 KB | None | 0 0
  1. Problema [1]
  2. type 'tipelement nod = Empty
  3.     | Nod of ('tipelement nod*'tipelement*'tipelement nod);;
  4.  
  5.  
  6. let rec inser n = function
  7.                 | Empty -> Nod(Empty, n, Empty)
  8.                 | Nod(l, x, r) ->
  9.                     if n < x then Nod((inser n l), x, r)
  10.                     else if n > x then Nod(l, x, (inser n r));;
  11.  
  12.  
  13. let rec search n = function
  14.                 | Nod(l, x, r) -> if n < x then (search n l) else if n > x then (search n r)
  15.                 | Empty -> 0;;
  16.  
  17.  
  18. let rec preorder = function
  19.   | Empty -> []
  20.   | Nod (l, x, r) -> x::preorder l@preorder r;;
  21.  
  22.  
  23. let rec inorder = function
  24.   | Empty -> []
  25.   | Nod (l, x, r) -> inorder l@x::inorder r;;
  26.  
  27. Problema [2]
  28. type expresie = Valoare of float
  29.    | Adunare of (expresie*expresie)
  30.    | Scadere of (expresie* expresie)
  31.    | Inmultire of (expresie*expresie)
  32.    | Impartire of (expresie* expresie)
  33.    | Fc1 of ((float->float)*expresie)
  34.    | Fc2 of ((float->float->float)*expresie*expresie);;
  35.  
  36. //6/2-2^3+cos(2*asin 1)
  37.  
  38. let a = Adunare(Scadere(Impartire(Valoare 6.0, Valoare 2.0), Fc2(**, Valoare 2.0, Valoare 3.0)), Fc1(cos, Inmultire(Valoare 2.0, Fc1(asin, Valoare 1.0))));;
  39.  
  40.  
  41. let rec eval = function
  42.             | Valoare(x) -> x
  43.             | Adunare(x,y) -> (eval x) +. (eval y)
  44.             | Scadere(x,y) -> (eval x) -. (eval y)
  45.             | Inmultire(x,y) -> (eval x) *. (eval y)
  46.             | Impartire(x,y) -> (eval x) /. (eval y)
  47.             | Fc1(f, x) -> (f (eval x))
  48.             | Fc2(f, x, y) -> (eval x) ** (eval y);;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement