Questions / réponses

Fonction auxiliaire

Fonction auxiliaire

Xavier Gerardin -
Vastausten määrä: 3

Bonjour,


Pour faire merge_sort il est indiqué d'utiliser la fonction split. Je l'ai fais sur mon ordinateur à moi et tout fonctionne mais lorsque je mets toutes les fonctions sur Moodle (split, merge, merge_sort, etc..) cela me renvoie tout simplement "test échoué"


Je m'y prends mal ou mes fonctions sont bidons ?


Merci

Vastaus Xavier Gerardin

Re: Fonction auxiliaire

Philippe Duchon -

Je pense que vous ne testez pas assez vos fonctions... il faut le faire sur des cas suffisamment variés, notamment des "petits" cas. Je crains que même votre fonction split ne soit pas correcte.

Le match dans votre fonction merge_sort ne couvre pas toutes les possibilités (et si vous l'avez définie dans un environnement Ocaml standard, vous devez avoir eu un warning qui le dit, il me semble).


Vastaus Philippe Duchon

Re: Fonction auxiliaire

Marc Zeitoun -

Le match dans la fonction merge_sort couvre toutes les possibilités par le cas l1,l2 ->..., mais le découpage en cas est bizarre (pourquoi le cas d'arrêt est-il celui où les listes sont de longueur 1 ? que se passe-t-il si l'une des listes est vide ?).

Par ailleurs, et c'est valable pour tou.te.s, il faut tester les fonctions. Ça n'a pas dû être fait sur l'exercice :

# merge_sort [1];;

Stack overflow during evaluation (looping recursion?).

# merge_sort [1; 2; 3];;

- : int list = [1; 3]

Le fait qu'il n'y ait pas de détail dans le test provient de l'explosion de la pile.




Vastaus Marc Zeitoun

Re: Fonction auxiliaire

Xavier Gerardin -

Bonjour Mr,


Effectivement, le soucis venait de ma fonction split, je gérais mal la longueur de la liste et dans certain cas, je ne renvoyais tout simplement pas la bonne chose.


Merci de vos lumières ! hymy