Advertisement
Lucasbk38

Untitled

May 26th, 2024 (edited)
409
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 1.50 KB | None | 0 0
  1. (* Exercice 2 *)
  2.  
  3. type 'a mapile = { mutable contenu: 'a list };;
  4.  
  5. exception Empty;;
  6.  
  7.  
  8.  
  9. (* Question 1 *)
  10.  
  11. let creer_pile () = { contenu = [] };;
  12.  
  13.  
  14.  
  15. (* Question 2 *)
  16.  
  17. let est_vide = function
  18.   | { contenu = [] } -> true
  19.   | _ -> false;;
  20.  
  21.  
  22. if not (est_vide (creer_pile ())) then failwith "Pile créée non vide";;
  23.  
  24.  
  25.  
  26. (* Question 3 *)
  27.  
  28. let taille { contenu } = List.length contenu;;
  29.  
  30.  
  31. if (taille (creer_pile ()) <> 0) then failwith "Taille de la pile créée non nulle";;
  32.  
  33.  
  34.  
  35. (* Question 4 *)
  36.  
  37. let empiler element pile =
  38.   let { contenu } = pile in
  39.   pile.contenu <- element :: contenu;;
  40.  
  41.  
  42. let pile_test = creer_pile ();;
  43. empiler 21 pile_test;;
  44.  
  45. if (taille pile_test <> 1) then failwith "empiler n'ajoute pas d'éléments a la pile";;
  46.  
  47.  
  48.  
  49. (* Question 5 *)
  50.  
  51. let depiler pile =
  52.   let { contenu } = pile in match contenu with
  53.   | [] -> raise Empty
  54.   | t :: q -> pile.contenu <- q;;
  55.  
  56.  
  57. depiler pile_test;;
  58.  
  59. if not (est_vide pile_test) then failwith "depiler ne supprime pas d'éléments a la pile";;
  60.  
  61. try depiler pile_test; failwith "depiler sur une pile vide de lève pas l'exception Empty" with Empty -> ();;
  62.  
  63.  
  64.  
  65. (* Question 6 *)
  66.  
  67. let tete { contenu } = match contenu with
  68.   | [] -> raise Empty
  69.   | t :: q -> t;;
  70.  
  71. try ignore (tete pile_test); failwith "tete sur une pile vide de lève pas l'exception Empty" with Empty -> ();;
  72.  
  73. empiler 22 pile_test;;
  74. empiler 23 pile_test;;
  75.  
  76. if tete pile_test <> 23 then failwith "tete ou empiler ne fonctionne pas correctement";;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement