(* Exercice 1 *) type 'a tab_redim = {mutable nb: int ; mutable tab: 'a array} ;; let creer_tab () = failwith "A coder" ;; let acces t i = failwith "A coder" ;; let modif t i x = failwith "A coder" ;; let ajout t x = failwith "A coder" ;; let suppr t = failwith "A coder" ;; (*test*) let test_exo1 () = let t = creer_tab () in for i=0 to 9 do ajout t i done ; Printf.printf "Troisième élément : %d\n" (acces t 3) ; for i=0 to 9 do print_int (suppr t) ; print_string " " done ; print_newline () ; t ;; test_exo1 () ;; (* Exercice 2 *) type ('a, 'b) table_hachage = {hache: 'a -> int; donnees: ('a * 'b) list array } ;; (* Q1 *) let hachage_entier w k = failwith "A coder" ;; hachage_entier 14 201 ;; (* Q2 *) let hachage_chaine w s= failwith "A coder" ;; hachage_chaine 12 "Bonjour !" ;; hachage_chaine 12 "oh oui youpi dansons la carioca" ;; (* version schéma de Hörner *) let hachage_chaine w s = failwith "A coder" ;; hachage_chaine 12 "Bonjour !" ;; hachage_chaine 12 "oh oui youpi dansons la carioca" ;; (* Exercice 3 *) (* Q1 *) let creer_table h w = failwith "A coder" ;; creer_table (hachage_entier 5) 5 ;; let petit_exemple = { hache = hachage_entier 3; donnees = [|[(15, "truc"); (468, "ocaml"); (498, "Fenelon"); (144, "TP")]; [(1, "machin"); (154, "coucou")]; [(185, "info"); (512, "MP2I")]|] } ;; (* Q2 *) let recherche t k = failwith "A coder" ;; recherche petit_exemple 498 ;; recherche petit_exemple 499 ;; (* Q3 *) let element t k = failwith "A coder" ;; element petit_exemple 498 ;; element petit_exemple 499 ;; (* Q4 *) let ajout t k e = failwith "A coder" ;; ajout petit_exemple 38 "Turing" ;; petit_exemple.donnees.(2) ;; (* Q5 *) let suppression t k = failwith "A coder" ;; suppression petit_exemple 498 ;; petit_exemple.donnees.(0) ;; (* Exercice 4 *) type ('a, 'b) table_dyn = {hache: int -> 'a -> int ; mutable taille: int ; mutable donnees: ('a * 'b) list array} ;; (* Q1 *) let creer_table_dyn h w = failwith "A coder" ;; let recherche_dyn t k = failwith "A coder" ;; let element_dyn t k = failwith "A coder" ;; (* Q2 *) let rearrange_dyn t = (* à utliser lorsque qu'il y a trop d'éléments dans la lable *) failwith "A coder" ;; (* Q3 *) let ajout_dyn t k e = failwith "A coder" ;; (* Q4 *) let rearrange_bis_dyn t = (* à utliser lorsque qu'il y a trop peu d'éléments dans la lable *) failwith "A coder" ;; let suppression_dyn t k = failwith "A coder" ;;