Traduire du Caml en C

Ghada -  
Jithel Messages postés 843 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, svp traduisez ce code de Caml --> C


let d = fun x y i j -> if x.(i-1)=y.(j-1) then 1 else 0;;
let subseq length = fun x y ->
let m = vect length x and n = vect length y in
let l = make matrix (m+1) (n+1) 0 in
for i = 1 to m do
for j = 1 to n do
l.(i).(j) <- max
(l.(i-1).(j-1) + (d x y i j))
(max l.(i).(j-1) l.(i-1).(j))
done
done;
l.(m).(n);;
let t1 = [|�a�;�b�;�c�|];;
let t2 = [|�c�;�b�;�c�|];;
subseq length t1 t2;;

let min fun = fun f i1 i2 ->
let i = ref i1 in let res = ref (f !i) in
for j = i1 to i1 do
if !res > (f j) then (res := f j; i := j; );
done;
!i;;

t optprod = fun d ->
let n = vect length d - 1 in
let rec p = fun i j ->
let f = fun k ->
(p i k ) + (p (k+1) j) + d.(i)*d.(k+1)*d.(j+1) in
if i = j then 0
else f (min fun f i (j-1))
in p 0 (n-1)

let optprod dyn = fun d ->
let n = vect length d - 1 in
let p = make matrix n n 0 in
for l = 1 to (n-1) do
for i = 0 to (n-l-1) do
let j = l + i in
let f = fun k -> p.(i).(k)+p.(k+1).(j)+d.(i)*d.(k+1)*d.(j+1) in
let k = min fun f i (j-1) in
p.(i).(j) <- f k
done
done;
p.(0).(n-1);;

let optprod tree d =
let n = vect length d - 1 in
let p = make matrix n n 0 in
let s = make matrix n n (-1) in
for l = 1 to n - 1 do
for i = 0 to n - l - 1 do
let j = l + i in
let f k = p.(i).(k) + p.(k+1).(j) + d.(i) * d.(k+1) * d.(j+1) in
let k = min fun f i (j-1) in
p.(i).(j) <- f k;
s.(i).(j) <- k
done
done;
let rec aux i j =
if i = j then (Matrix i)
else Product (aux i s.(i).(j), aux (s.(i).(j) + 1) j)
in
aux 0 (n-1)
;;
A voir également:

2 réponses

Ghada
 
Où est la solution dans votre réponse !!?
0
Jithel Messages postés 843 Date d'inscription   Statut Membre Dernière intervention   171
 
Nous sommes des bénévoles. De plus, en publiant un message sur ce forum, tu as accepté les conditions d'utilisation du site. Nous te prierons de bien vouloir te plier aux règles de notre forum. Sans quoi, aucune aide ne pourra t'être apportée
0
Utilisateur anonyme
 
Si tu veux que quelqu'un fasse ton travail à ta place, passe une petite annonce dans un site de recrutement.
Ça a un prix mais c'est possible.

Ici, on aide les gens motivés à s'en sortir par eux-mêmes, pour qu'ils progressent.

Le but d'un exercice c'est de s'exercer, donc ici personne ne le fera à ta place.
0
Ghada
 
Je n'utilise pas le language Caml et j'ai pas un besoin de l'utiliser et Ce n'est pas un exercice appartient à mes études .
C'est juste que j'ai un projet (programme) que je préparait loin à mes études .
Si vous pouvez m'aider merci sinon merci aussi .
(J'ai pas le besoin de personne pour faire mes exercices à ma place
0
Jithel Messages postés 843 Date d'inscription   Statut Membre Dernière intervention   171
 
Pourquoi ne pas faire quelque recherche sur la syntaxe Caml au préalable et nous présenter tes problèmes de compréhension ? Rien qu'en lisant le code, ça me semble assez évident pour certaines instructions (min, max)
0
Utilisateur anonyme
 
D'un autre coté, pourquoi ne pas tout simplement écrire ton propre algorithme en C.
0
Jithel Messages postés 843 Date d'inscription   Statut Membre Dernière intervention   171
 
Si c'est un algorithme trop compliqué, mieux vaut le porter en C en conversion ligne par ligne. Je pense que ce code ne lui appartient pas car il n'utilise pas le Caml.
0
Utilisateur anonyme
 
Et s’il y a des outils qui existent en Caml et pas en C, la traduction ligne par ligne ne sera pas simple.
Par exemple, (même si je ne maitrise pas le C) je suis à peu sûr qu’il n’y a pas d’équivalent direct à Make Matrix, il faudra soit trouver une lib dediée soit recorder la fonction
0