Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- exception DzieleniePrzezZero
- let ( ++ ) (a, b) (c, d) = (a*d + b*c, b*d)
- let ( -- ) (a, b) (c, d) = (a*d - b*c, b*d)
- let ( ** ) (a, b) (c, d) = (a*c, b*d)
- let ( /./ ) (a, b) (c, d) = (a,b) ** (d,c)
- let ( == ) (a, b) (c, d) = (a*d = b*c)
- (* najwiekszy wspolny dzielnik *)
- let rec NWD = function
- | (0, n) -> n
- | (m, n) -> NWD (n % m, m)
- (* skrocenie ulamka *)
- let skroc (l, m) =
- let znak = if l * m < 0 then -1 else 1
- let al = abs l
- let am = abs m
- let d = NWD (al, am)
- in (znak * (al / d), am / d)
- (* zamiana ulamka na string *)
- let naString (l, m) =
- let znak = if l*m<0 then "-" else "" (* deklaracje wewnetrzne *)
- let al = abs l (* wart.bezw. = liczba nat. *)
- let am = abs m
- let d = NWD(al, am)
- in znak + (System.Convert.ToString(al / d))
- + "/" + (System.Convert.ToString(am / d))
- (* main *)
- let main =
- printfn "%f" (1./2. + 2./3. * 3./4.)
- let k = (1, 2) ++ (2, 3) ** (3, 4)
- let (a,b) = k
- printfn "%A %f" k (float a / float b)
- let q1 = (-2, 3);
- let q2 = (5, -10);
- let q3 = q1 ++ q2;
- printfn "Test1: %A %A" q3 (naString q3)
- let q35 = q1 -- q2
- printfn "Test2: %A %A" q35 (naString q35)
- let q4 = q2 ** q3
- printfn "Test3: %A %A" q4 (naString q4)
- let q5 = q4 /./ q3
- printfn "Test4: %A %A" q5 (naString q5)
- let q6 = q1 == q2
- printfn "Test5: %A" q6
- printfn "Test6: %A" (naString q4)
- printfn "Test7: %A" (naString q5)
- 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement