Advertisement
Guest User

Untitled

a guest
Nov 19th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. // Learn more about F# at http://fsharp.org
  2. // See the 'F# Tutorial' project for more help.
  3.  
  4.  
  5. type kodArt = string
  6. type nazwaArt = string
  7. type cena = int
  8.  
  9. type rejestr = (kodArt * (nazwaArt * cena)) list
  10.  
  11. let Rejestr = [
  12. ("a1", ("ser biały", 3));
  13. ("a2", ("szprotki", 2));
  14. ("a3", ("sok", 4));
  15. ("a4", ("szprotki",8));
  16. ];
  17.  
  18. type sztukiA = int
  19. type pozArt = sztukiA * kodArt
  20. type zakupy = pozArt list
  21.  
  22.  
  23. let zakupy = [
  24. (4, "a2");
  25. (1, "a1") ];
  26.  
  27. type infoArt = sztukiA*nazwaArt*cena
  28. type infoLista = infoArt list
  29. type rachunek = infoLista * cena
  30.  
  31. exception BLEDNY_KOD_ARTYKULU
  32. let rec szukajArt u = function
  33. | [] -> raise BLEDNY_KOD_ARTYKULU
  34. | (k, (n, c)) :: baza_ogon
  35. -> if u = k then (n, c)
  36. else (szukajArt u baza_ogon);
  37.  
  38. let rec czyElement x = function
  39. | y::ys -> x=y || (czyElement x ys)
  40. | [] -> false;;
  41.  
  42. let rec utworzRachunek = function
  43. | ([], _) -> ([], 0)
  44. | ((sztA, kA)::zak, rej) ->
  45. let (nazA, cenA) = szukajArt kA rej
  46. let kosztA = sztA * cenA
  47. let (Rach, suma) = utworzRachunek(zak, rej)
  48. in ((sztA, nazA, kosztA)::Rach, kosztA + suma)
  49.  
  50. let rec znajdzTowaryOTejSamejNazwieZRejestru (name:string) = function
  51. | [] -> []
  52. | (kod,(nazwa,cena)) :: ogon ->
  53. if nazwa = name then (kod,(nazwa,cena)) :: (znajdzTowaryOTejSamejNazwieZRejestru name ogon)
  54. else (znajdzTowaryOTejSamejNazwieZRejestru name ogon)
  55.  
  56. [<EntryPoint>]
  57. let main argv =
  58. printfn "%A" argv
  59.  
  60. //let artykul1 = szukajArt "a1" ([]:rejestr)
  61. let artykul2 = szukajArt "a3" Rejestr
  62. let rachunek1 = utworzRachunek([], Rejestr)
  63. let rachunek2 = utworzRachunek(zakupy, Rejestr)
  64.  
  65. printfn "%A" rachunek2
  66.  
  67.  
  68. printfn "%A" <| znajdzTowaryOTejSamejNazwieZRejestru "szprotki" Rejestr
  69.  
  70. 0 // return an integer exit code
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement