Advertisement
cristiano002

F#2

Mar 17th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 1.89 KB | None | 0 0
  1. // Learn more about F# at http://fsharp.net
  2. // See the 'F# Tutorial' project for more help.
  3. //
  4.  
  5. // Program operujący na ułamkach dziesiętnych
  6.  
  7.  
  8.  
  9. type ulam = int*int
  10. exception DzieleniePrzezZero
  11.  
  12.  
  13.  
  14.  
  15. //////////////////////////// ZADANIE 1
  16. let ( ++ ) (a, b) (c, d) =
  17.     if (b = 0 || d = 0) then
  18.         raise DzieleniePrzezZero
  19.     else (a*d + b*c, b*d);
  20.  
  21. let niepoprawny = (1, 1) ++ (1, 2)
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28. //////////////////////////// ZADANIE 2
  29. type ulamek = {licznik: int; mianownik: int}
  30. let jednadrugaa = { licznik = 1; mianownik = 2 }
  31. let dwietrzecie = { licznik = 2; mianownik = 3 }
  32.  
  33. let ( ++++ ) (x: ulamek) (y: ulamek) =
  34.     if (x.mianownik = 0 || y.mianownik = 0) then
  35.         raise DzieleniePrzezZero
  36.     else
  37.         {licznik = x.licznik * y.mianownik + x.mianownik * y.licznik; mianownik =  x.mianownik * y.mianownik}
  38.  
  39. let abc = jednadrugaa ++++ dwietrzecie
  40. printfn "%A" abc
  41.  
  42.  
  43.  
  44.  
  45.  
  46. //////////////////////////// ZADANIE 3
  47. let rec NWD = function
  48.     | (0, n) -> n
  49.     | (m, n) -> NWD(n % m, m)
  50.  
  51. let skroc (l,m) =
  52.    let znak = if l*m<0 then -1 else 1
  53.    let al = abs l
  54.    let am = abs m
  55.    let d  = NWD(al,am)
  56.    in (znak * (al / d), am / d)
  57.  
  58. let ( ** ) (a, b) (c, d) = skroc(a*c, b*d)
  59. let skrocony = (1, 3) ** (3, 2)
  60. printfn "%A" skrocony
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68. /////////////////////////// ZADANIE 11
  69.  
  70. type ksiazka = {tytul: string; autor: string; rok: int; mutable cena: decimal}
  71. let ksiazkaa = {tytul = "KsiazkaA"; autor = "AAutor"; rok = 1998; cena = 10.20M}
  72. let ksiazkab = {tytul = "KsiazkaB"; autor = "BAutor"; rok = 1999; cena = 12.50M}
  73.  
  74. let zmienCene (x: ksiazka, c: decimal) =
  75.     if(x.cena > c) then
  76.         x.cena <- c
  77.  
  78. zmienCene(ksiazkaa, 20.00M)
  79. zmienCene(ksiazkab, 11.50M)
  80.  
  81. printfn "%M" ksiazkaa.cena
  82. printfn "%M" ksiazkab.cena
  83.    
  84. [<EntryPoint>]
  85. let main argv =
  86.     printfn "%A" argv
  87.     0 // return an integer exit code
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement