Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- exception DzieleniePrzezZero
- type ulam = int*int
- type ulamek = {licznik: int; mianownik: int}
- type osoba = {imie: string; nazwisko: string; nrtelefonu: int32}
- type ksiazka = {tytul: string; rok: int; cena: double}
- 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 (++) (a, b) (c, d) =
- if (b<>0 && d<>0) then skroc(a*d+ b*c, b*d)
- else raise DzieleniePrzezZero
- let ( -- ) (a, b) (c, d) =
- if (b<>0 && d<>0) then skroc(a*d - b*c, b*d)
- else raise DzieleniePrzezZero
- let ( ** ) (a, b) (c, d) =
- if (b<>0 && d<>0) then skroc(a*c, b*d)
- else raise DzieleniePrzezZero
- let ( /./ ) (a, b) (c, d) =
- if (b<>0 && d<>0) then skroc((a,b) ** (d,c))
- else raise DzieleniePrzezZero
- let ( == ) (a, b) (c, d) =
- if (b<>0 && d<>0) then (a*d = b*c)
- else raise DzieleniePrzezZero
- let dodajUL(u1:ulamek, u2:ulamek) =
- if (u1.mianownik <> 0 && u2.mianownik <> 0) then skroc(u1.licznik*u2.mianownik + u2.licznik * u1.mianownik, u1.mianownik*u2.mianownik)
- else raise DzieleniePrzezZero
- let odejmijUL(u1:ulamek, u2:ulamek) =
- if (u1.mianownik <> 0 && u2.mianownik <> 0) then skroc(u1.licznik*u2.mianownik - u2.licznik * u1.mianownik, u1.mianownik*u2.mianownik)
- else raise DzieleniePrzezZero
- let pomnozUL(u1:ulamek, u2:ulamek) =
- if (u1.mianownik <> 0 && u2.mianownik <> 0) then skroc(u1.licznik*u2.licznik, u1.mianownik*u2.mianownik)
- else raise DzieleniePrzezZero
- let podzielUL(u1:ulamek, u2:ulamek) =
- if (u1.mianownik <> 0 && u2.mianownik <> 0) then skroc(u1.licznik*u2.mianownik, u2.licznik*u1.mianownik)
- else raise DzieleniePrzezZero
- let porownajUL(u1:ulamek, u2:ulamek) =
- if (u1.mianownik <> 0 && u2.mianownik <> 0) then (u1.licznik*u2.mianownik = u2.licznik * u1.mianownik)
- else raise DzieleniePrzezZero
- let rec potega (m, n) =
- match n with
- | 0 -> 1
- | _ -> m * potega(m, n-1)
- let potegaUL ((a, b), n) =
- if b <> 0 then (potega (a,n), potega (b,n))
- else raise DzieleniePrzezZero
- let mutable lpierwsza = false;
- let rec pierwsza' (n, k) =
- if (k = 2) then lpierwsza
- else (
- if ( n % k = 0 ) then lpierwsza <- true
- else lpierwsza <- lpierwsza
- pierwsza' (n,k - 1)
- )
- let pierwsza n = pierwsza' (n,n-1)
- let rec podzielnaOdDo(n:int, k:int, dzielnik:int) =
- if (n % dzielnik = 0) then n
- elif (n<=k) then podzielnaOdDo(n+1, k, dzielnik)
- else 0
- let pomnozUlPrzezLiczbe((a,b),n) =
- if (b<>0) then skroc(a*n,b)
- else raise DzieleniePrzezZero
- let sprawdzNazwisko (o1:osoba, o2:osoba) =
- if o1.nazwisko = o2.nazwisko then true
- else false
- let zmienCene (k:ksiazka, nowaCena:double) =
- if (k.cena < nowaCena) then {k with cena=nowaCena}
- else k
- [<EntryPoint>]
- let main argv =
- let ulamek1 = {licznik=3; mianownik=5}
- let ulamek2 = {licznik=0; mianownik=2}
- let ul1 = (2, 3)
- let ul2 = (4, 5)
- let osoba1 = {imie = "a"; nazwisko = "a"; nrtelefonu = 1}
- let osoba2 = {imie = "b"; nazwisko = "a"; nrtelefonu = 2}
- let mutable ksiazka = {tytul = "asd"; rok = 2000; cena = 99.99}
- ksiazka <- zmienCene(ksiazka, 150.0)
- printfn "%A" ksiazka
- System.Console.ReadKey() |> ignore
- 0 // zwracanie kodu zakończenia w postaci liczby całkowitej
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement