Traduire du Caml en C

Fermé
Ghada - 13 déc. 2018 à 20:49
Jithel Messages postés 843 Date d'inscription mercredi 20 juin 2018 Statut Membre Dernière intervention 31 août 2021 - 14 déc. 2018 à 15:57
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

Où est la solution dans votre réponse !!?
0
Jithel Messages postés 843 Date d'inscription mercredi 20 juin 2018 Statut Membre Dernière intervention 31 août 2021 171
13 déc. 2018 à 22:24
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
13 déc. 2018 à 23:24
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
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 mercredi 20 juin 2018 Statut Membre Dernière intervention 31 août 2021 171
14 déc. 2018 à 10:09
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
14 déc. 2018 à 10:30
D'un autre coté, pourquoi ne pas tout simplement écrire ton propre algorithme en C.
0
Jithel Messages postés 843 Date d'inscription mercredi 20 juin 2018 Statut Membre Dernière intervention 31 août 2021 171
14 déc. 2018 à 11:47
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
14 déc. 2018 à 13:29
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