Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 0.85 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))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement