Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 1.48 KB | None | 0 0
  1. exception DzieleniePrzezZero
  2.  
  3. let ( ++ ) (a, b) (c, d) = (a*d + b*c, b*d)
  4. let ( -- ) (a, b) (c, d) = (a*d - b*c, b*d)
  5. let ( ** ) (a, b) (c, d) = (a*c, b*d)
  6. let ( /./ ) (a, b) (c, d) = (a,b) ** (d,c)
  7. let ( == ) (a, b)  (c, d) = (a*d = b*c)
  8.  
  9. (* najwiekszy wspolny dzielnik *)
  10. let rec NWD = function
  11.     | (0, n) -> n
  12.     | (m, n) -> NWD (n % m, m)
  13.  
  14.  
  15. (* skrocenie ulamka *)
  16. let skroc (l, m) =
  17.     let znak = if l * m < 0 then -1 else 1
  18.     let al = abs l
  19.     let am = abs m
  20.     let d = NWD (al, am)
  21.     in (znak * (al / d), am / d)
  22.  
  23. (* zamiana ulamka na string *)
  24. let naString (l, m) =
  25.    let znak = if l*m<0 then "-" else "" (* deklaracje wewnetrzne *)
  26.    let al = abs l (* wart.bezw. = liczba nat. *)
  27.    let am = abs m
  28.    let d = NWD(al, am)
  29.    in znak + (System.Convert.ToString(al / d))
  30.            + "/" + (System.Convert.ToString(am / d))
  31.  
  32. (* main *)
  33. let main =
  34.     printfn "%f"  (1./2. + 2./3. * 3./4.)
  35.     let k = (1, 2) ++ (2, 3) ** (3, 4)
  36.     let (a,b) = k
  37.     printfn "%A %f" k (float a / float b)
  38.  
  39.     let q1 = (-2, 3);
  40.     let q2 = (5, -10);
  41.     let q3 = q1 ++ q2;
  42.     printfn "Test1: %A %A" q3 (naString q3)
  43.  
  44.     let q35 = q1 -- q2
  45.     printfn "Test2: %A %A" q35 (naString q35)
  46.  
  47.     let q4 = q2 ** q3
  48.     printfn "Test3: %A %A" q4 (naString q4)
  49.  
  50.     let q5 = q4 /./ q3
  51.     printfn "Test4: %A %A" q5 (naString q5)
  52.  
  53.     let q6 = q1 == q2
  54.     printfn "Test5: %A"  q6
  55.  
  56.     printfn "Test6: %A" (naString q4)
  57.     printfn "Test7: %A" (naString q5)
  58.     0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement