Ecrivez une fonction nommée echange_cases
qui prend en paramètre trois arguments. Le premier est un tableau tab
de type quelconque, et les deux autres i
et j
sont des indices valides dans ce tableau. Le travail de cette fonction est d'échanger le contenu de la case d'indice i
avec celui de la case d'indice j
.
Remarque : cette fonction est de type 'a array -> int -> int -> unit
. En effet, il n'y a pas besoin de connaître le type de contenu des cases du tableau pour échanger deux contenus. La fonction fonctionnera donc pour tous les types de tableau, c'est-à-dire pour tous les tableaux de la forme 'a array
.
Indication : utilisez print_int_array
pour tester la fonction. Par exemple :
let tab = [| 0; 1; 2; 3; 4 |] in echange_cases tab 2 4; echange_cases tab 2 0; print_int_array tab;
devra afficher :
4 1 0 3 2
Code à compléter Caml
let read_int() = Scanf.scanf " %d" (fun x -> x);; let lit_tableau () = let s = read_int() in Array.init s (fun i -> read_int()) ;; let affiche_tableau_entiers tab = let taille = Array.length tab in print_int taille ; print_newline () ; for indice = 0 to pred taille do print_int tab.(indice); print_string " "; done; print_newline(); ;; let echange_cases t a b = (* à compléter *) ;; affiche_tableau_entiers ( let t = lit_tableau() in echange_cases t (read_int()) (read_int()) ;t );;