Bonjour, pouvez-vous me dire comment améliorer/corriger/simplifier/, etc., les programmes suivants (écrits en Caml light):
1) Suppression de tous les zéros à la fin d'un vecteur (si le vecteur ne contient que des zéros, en laisser quand même un).
2) Egaliser la longueur de 2 vecteurs en complétant par des zéros à la fin.
1)
2)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 let kill_zeros v = let n=vect_length v and p=ref 0 in while !p<n & v.(n- !p-1) =0 do p:= !p+1 done; if !p=n then [|0|] else begin let res=make_vect (n- !p) 0 in for k=0 to (n- !p-1) do res.(k) <- v.(k) done; res end ;;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 let mmlong u v= (*complete u ou v par des zéros à droite pour qu'ils aient la même longueur, et renvoie (u,v) *) let aux u1 u2 p q= (* p=vect_length u1, q=vect_length u2, p<q *) let res=make_vect q 0 in for k=0 to p do res.(k)<-u1.(k) done; (res,u2) in let m=vect_length u and n=vect_length v in if m<n then aux u v m n else if m>n then aux v u n m else (*m=n*) (u,v) ;;
Partager