Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Learn more about F# at http://fsharp.org
- // See the 'F# Tutorial' project for more help.
- type ulam = int * int
- exception DzieleniePrzezZero
- let ( ++ ) (a, b) (c, d) = if b=0 || d=0 then raise DzieleniePrzezZero else (a*d+b*c, b*d)
- let ( -- ) (a, b) (c, d) = if b=0 || d=0 then raise DzieleniePrzezZero else ( a*d - b*c, b*d )
- let ( ** ) (a, b) (c, d) = if b=0 || d=0 then raise DzieleniePrzezZero else (a*c, b*d)
- let ( /./ ) (a, b) (c, d) = if b=0 || d=0 then raise DzieleniePrzezZero else (a, b) ** (d, c)
- let ( == ) (a, b) (c, d) = if b=0 || d=0 then raise DzieleniePrzezZero else (a*d = b*c)
- let rec NWD = function
- | (0, n) -> n
- | (m, n) -> NWD( n%m, m)
- 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)
- let naString (l, m) =
- let znak = if l*m<0 then "-" else ""
- let al = abs l
- let am = abs m
- let d = NWD(al, am)
- in znak + (System.Convert.ToString(al / d))
- + "/" + (System.Convert.ToString(am / d))
- type samochod = {marka: string; rocznik: int; pojemnosc: float}
- let maloLitrazowy (x: samochod) = x.pojemnosc < 900.0;
- type osoba = { imie: string; urodzony: int; adres: string}
- let starszy(k1: osoba, k2: osoba) = k1.urodzony > k2.urodzony;
- type rej = {pojazd: samochod; posiadacz: osoba }
- let wiekszapojemnosc (s1: rej, s2: rej) =
- s1.pojazd.pojemnosc > s2.pojazd.pojemnosc
- type ulamek = { licznik: int; mianownik: int }
- //let ( ++ ) (u1:ulamek) (u2:ulamek) = if u1.mianownik=0 || u2.mianownik=0 then raise DzieleniePrzezZero else (u1.licznik*u2.mianownik+bu1.mianownik*u2.licznik, u1.mianownik*u2.mianownik)
- [<EntryPoint>]
- let main argv =
- printfn "%A" argv
- printfn "%f" (1./2. + 2./3. * 3./4.)
- let wynik1 = (1, 2) ++ (2, 3) ** (3, 4)
- printfn "%A" (skroc wynik1)
- printfn "%s" (naString wynik1)
- //testy
- let q1 = (-2, 3)
- let q2 = (5, -10)
- let q3 = q1 ++ q2
- printfn "q1 ++ q2 = %A\n" q3
- let q4 = q1 -- q2
- printfn "q1 -- q2 = %A \n" q4
- let q5 = q1 ** q2
- printfn "q1 ** q2 = %A \n" q5
- let q6 = q2 /./ q3
- //rekordy----------
- let siena = {marka = "FIAT"; rocznik=1997; pojemnosc=1586.0 }
- let maluch = {marka= "FIAT"; rocznik=1987; pojemnosc= 648.0 }
- printfn "siena: %b" (maloLitrazowy siena)
- let kier1 = { imie="Pawel B"; adres="Niemcy"; urodzony= 966 }
- let kier2 = { imie="Zygmunt"; adres="Polska"; urodzony = 1450 }
- printfn "k1 starszy od k2: %b" ( starszy (kier1, kier2) )
- let sam1:rej = { pojazd= siena; posiadacz=kier1}
- let sam1:rej = { pojazd=maluch; posiadacz=kier2}
- let ulamek1 = {licznik= 1; mianownik=10}
- let ulamek2 = {licznik=3; mianownik=20}
- //printfn "ulamek1 ++ ulamek2 = %A" (ulamek1 + ulamek2)
- 0 // return an integer exit code
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement