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 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)
- let al_s = al / d
- let am_s = am / d
- let c = al_s / am_s
- let al_minus = al_s - c*am_s
- in znak + (System.Convert.ToString( c )) + ":" + (System.Convert.ToString(al_minus))
- + "/" + (System.Convert.ToString(am_s))
- 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 rec potega (u1: ulamek) n:int =
- match n with
- | 0 -> 1
- | _ -> (u1 ** ( u1 ** (n-1))
- let ( ++ ) (u1:ulamek) (u2:ulamek) = if u1.mianownik=0 || u2.mianownik=0 then raise DzieleniePrzezZero else skroc (u1.licznik*u2.mianownik+u1.mianownik*u2.licznik, u1.mianownik*u2.mianownik)
- let ( -- ) (u1:ulamek) (u2:ulamek) = if u1.mianownik=0 || u2.mianownik=0 then raise DzieleniePrzezZero else skroc (u1.licznik*u2.mianownik-u1.mianownik*u2.licznik, u1.mianownik*u2.mianownik)
- let ( ** ) (u1:ulamek) (n:int) = potega u1 n
- [<EntryPoint>]
- let main argv =
- printfn "%A" argv
- //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= 566; mianownik=10}
- let ulamek2 = {licznik=3; mianownik=20}
- printfn "ulamek1 ++ ulamek2 = %A" (ulamek1 ++ ulamek2)
- printfn "ulamek1 -- ulamek2 = %A" (ulamek1 -- ulamek2)
- printfn "naString: ulamek1 ++ ulamek2 = %s" (naString (ulamek1 ++ ulamek2))
- printfn "ulamek1 ** 3 = " (ulamek1 ** 2)
- 0 // return an integer exit code
Add Comment
Please, Sign In to add comment