bonjour, voila j'ai une petite question concernant mon programme sous caml
let echange t d = let n = vect_length t in
for d=0 to n-4 do
for c=d+1 to n-3 do
for b=c+1 to n-2 do
for a= b+1 to n-1 do
if t.(b)>t.(d) & t.(d) > t.(a) & t.(a) > t.(c) then true else false;
done;
done;
done;
done;;
cependant caml me renvoie " this expression has type bool but is used with the type unit"
donc comment resoudre mon probleme de type?
merci, d'avance.
kerzu
Bonsoir,
Essaye de traduire ce que tu fais...
« Do », c'est « faire »... autrement dit on sent bien que Caml attend à recevoir après des actions à faire (par exemple, afficher des choses, affecter des variables, en particulier des ref, etc.)
Donc on ne peut pas mettre dedans une valeur à retourner (en l'occurrence ici un booléen).
Une autre question (essentielle) à se poser est : que doit faire ton programme ? Que doit-il retourner ?
Parce que ça semble quand même un peu moche... Et il y a des détails étranges : à quoi ça sert le d que tu prends en argument ?
Autre détail sinon : écrire « if t.(b)>t.(d) & t.(d) > t.(a) & t.(a) > t.(c) then true else false » est un peu lourd.
Ton if teste déjà si la condition est vraie, en renvoyant true si c'est le cas et false sinon.
Autrement dit, il suffit de retourner la valeur du booléen t.(b)>t.(d) & t.(d) > t.(a) & t.(a) > t.(c)... du moins une fois que tu seras sûr qu'il faut bien retourner ça.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :