Verifie que tu ne sors pas de ton tableau... est-ce que p et r sont toujours entre 0 et la taille de T->t et tmp?
Comment as-tu déclaré tmp?
Utilises un debugger pour voir où se trouve l'erreur...
Version imprimable
Verifie que tu ne sors pas de ton tableau... est-ce que p et r sont toujours entre 0 et la taille de T->t et tmp?
Comment as-tu déclaré tmp?
Utilises un debugger pour voir où se trouve l'erreur...
En fait, comment fait on en c pour avoir la valeur inférieur d'un nombre.
Je m'explique en fait un moment il fait (3+2)/2 ce qui est égale à 2.5 é lui il le convertir en 3 alors que je voudrais qu'il mette 2.
Non, en fait le problème ne vient pas de là.
C'est lorsque q = 9, p = 9, r= 10.
Il passe dans la procédure Fusion.
Lors de l'affection
tout ce termine bien mais il n'arrive pas à sortir de la procédure Fusion, Le programme tourne alors indéfiniment.Code:
1
2
3 for(i=p;i<=r-1;i++) T->t[i] = temp[i];
En fait, je dépasse la taille du tableau, parce que l'indice est à 9 et que l'indice max doit être de 7.
La division entière fait ce que tu voudrais... En division entière 5/2 = 2Code:Je m'explique en fait un moment il fait (3+2)/2 ce qui est égale à 2.5 é lui il le convertir en 3 alors que je voudrais qu'il mette 2.
Comment tu peux sortir de ta taille de tableau? Normalement ton appel récursif est donné par:Citation:
En fait, je dépasse la taille du tableau, parce que l'indice est à 9 et que l'indice max doit être de 7.
A quel moment est-ce que tu pourrais le dépasser...Code:
1
2
3 TriFusion(T,p,q); TriFusion(T,q+1,r);
Autre problème que tu as, pourquoi ton programme boucle aux valeurs p=9, r=10?
Vérifies, ce n'est pas normal... Normalement, pour ces valeurs ta fonction ne devrais plus faire d'appels récursifs
je regarderais sa en détails chez moi parce que là avec gdb je galère un peu.
Je pense que 'y arriverais mieux avec une interface graphique.
Je te tiens au courant de mes états d'avancements.
En tout cas merci pour toutes ces réponses