Topic : « [c++] Un khey fort en c++ »

Avatar de krid-select krid-select
Salut,
y a -til des khey fort en c++ par ici? Je suis en train de littéralement péter un cable. https://image.noelshack.com/minis/2017/01/1483903109-bloggif-5872903951574.png
J'ai un devoir a rendre pour dimanche ça fait plus d'une semaine que je suis dessus et rien à faire j'avance pas même en allant chercher à droite a gauche sur des forum US.

Voila alors dans le cadre de mon cours on doit se familiariser avec els structures de données. Et pour ce devoir on doit en créer 2 :
Un arbreAVL ainsi qu'un arbreMAP

On a un squelette de classe fourni ainsi que des instructions pour nous aider à le faire. Mais en suivant les instructions quand je passe aux tests je me retrouve avec des segmentation fault.
Je vous met plus bas les bouts de codes qui semblent poser probleme après avoir isolé un par un tous les bouts de code que j'ai (je ne sais pas si le reste de mon code fonctionne mais je suis sur que cette partie là génere une erreur)

pour commencer le code permettant d'insérer un noeud:

https://pastebin.com/S7QTaci2
Apercite https://pastebin.com/S7QTaci2


la partie en gras étant la partie que j'ai moi même ajouté au code d'origine du prof
ensuite le deuxieme bout de code :

https://pastebin.com/E6vLCgsP
Apercite https://pastebin.com/E6vLCgsP


En suivant les instructions, le cours ou des recherches google ça me semble correcte pourtant quand viens la phase de tests :
https://pastebin.com/DPGj606X
Apercite https://pastebin.com/DPGj606X


J'ai une erreur de segmentation. J'ai essayé de bidouiller un peu j'arrive a voir que les valeurs entrent mais avant la dernière valeur l'erreur apparait.

Si un d'entre vous pourrait m'aider ce serait super cool

Bonne soirée les khey
Avatar de Bazlouc Bazlouc
Yo kheyou, t'as des problèmes de lecture dans des emplacements mémoire, en gros tu vas chercher des valeurs où tu ne devrais pas. Tes fonctions sont illisibles = Nom en français = cancer. Le nom de tes variables aussi. Change tout ça et tu verras plus clair https://image.noelshack.com/minis/2017/02/1484173541-cc-risitas596.png
Avatar de krid-select krid-select
>>Bazlouc
Yo kheyou, t'as des problèmes de lecture dans des emplacements mémoire, en gros tu vas chercher des valeurs où tu ne devrais pas. Tes fonctions sont illisibles = Nom en français = cancer. Le nom de tes variables aussi. Change tout ça et tu verras plus clair https://image.noelshack.com/minis/2017/02/1484173541-cc-risitas596.png

Je n'ai pas le choix sur les noms. En gros je pointe vers des cases qui n'existent pas? Je vais regarder ça
Avatar de krid-select krid-select
Ok je suis officiellement un boulet en fait je sais pas par quel mciracle j'ai inevrsé le contenu des deux fonction de rotation alors que je devais en créer qu'une (j'ai repris le fichier de base du prof pour cérifier que j'avais pas touché ses fonctions)...
Du coup je réussi les 5 ou 6 premeir tests et je regarde le détail des autres.
Merci encore
Avatar de krid-select krid-select
Recoucou
alors j'ai bien avancé https://image.noelshack.com/minis/2017/04/1485268586-hackeur-v1.png
j'ai modifié le fonctionnement de plusieurs de mes fonctions en arrivant aux itérateurs mais voila les tests des itérateurs me ramenent des erreurs (alors que les test précédents qui les utilisent n'en ramenent pas).

J'ai réussi a en corriger quelques unes mais là je sèche un peu donc voici le code complet de mon arbre:
https://pastebin.com/ydHp6yFr
Apercite https://pastebin.com/ydHp6yFr


j'ai highlight les fonctions dont je ne suis pas sûr du bon fonctionnement (à priori rechercher fonctionne tout de même bien puisque la fonction contient fonctionne)

et voici les test qui ne passent pas :

https://pastebin.com/eRYNPPH1
Apercite https://pastebin.com/eRYNPPH1


J'ai mis en commentaire et highlight mon probleme exacte.
Voilà si des khey veulent bien à nouveau me pointer a quel point je suis un gros boulet https://image.noelshack.com/minis/2016/39/1474897005-mesplans.png

Merci par avance
Avatar de krid-select krid-select
Au final j'ai réussi à me débloquer du coup la solution est assez simple en fait mais tout mon code sur les itérateurs est totalement bullshit j'ai tout effacé pour revenir a un truc propre.
Et je suis revenu à une version de mon code qui n'utilise pas les itérateurs ailleurs que là où il y en a besoin.
Si quelqu'un se demande quelle est la solution:
Pré incrément :
Il faut initialiser un noeud a la valeur du prochain noeud à droite. Tant qu'il n'est pas nul on empile et on va a gauche.
Ensuite c'est assez simple on vérifie le contenu du chemin et on modifie la valeur de courant

Pour les recherche alors
egal ou suivant : on fait basiquement une recherche avec une condition si jamais on a pas retrouvé la valeur mais une valeur plus petite
egal ou precedent ; la meme chose sauf que pour trouver le precedent il faut sauvegarder la derniere position quand l'élément recherché est plus grand que l'élément courant

pour la recherche bon là c'est simple j'étais presque à la bonne solution donc je ais pas en dire plus à part que l'idée est là mais il ne faut pas utiliser un itérateur pour récupérer les valeurs

le reste était déjà bon https://image.noelshack.com/minis/2016/26/1467335935-jesus1.png

J'ai plus qu'à faire le reste de mon tp https://image.noelshack.com/minis/2017/01/1483903109-bloggif-5872903951574.png
Liste des sujets