Dans le cadre d'un projet, je dois travailler sur la création d'un arbre récursif, qui, à partir d'une branche, en fait naître 2, en partant du milieu du segment précédent, et en effaçant la partie droite de ce segment. Puisqu'une image vaut mieux qu'un long discours :
Voici mon code, je pense ne pas être loin mais je ne sais pas ce qui bloque...
main.cpp
void arbre(Vector a, Vector b, int branches, Color col, int pen_w)
{
Vector c,d,newb;
newb.set_x(b.get_x()-a.get_x());b.get_y()-a.get_y();
if (branches>0)
{
c.set_x(((a+b)/2).get_x());
c.set_y(((a+b)/2).get_y());
d.set_x(newb.Rotate(20).get_x()+a.get_x());
d.set_y(newb.Rotate(20).get_y()+height/2);
arbre(c,b,branches-1,WHITE,pen_w);
arbre(c,d,branches-1,col,pen_w);
}
else
drawLine(a,b,col,pen_w);
}
int main()
{
openWindow(width,height);
// Question 6
clearWindow();
Vector d,e;
d.set_x(100);d.set_y(250);e.set_x(400);e.set_y(250);
arbre(d,e,4,BLACK,1);
click();
endGraphics();
return 0;
}
#pragma once
// Question 7 : rien ne change dans le main puisque l'on a modifié les attributs et pas les méthodes !
// Or dans le main on ne se sert que des méthodes puisque l'on a mis les attributs en privé !
const int DIM=2;
class Vector {
double coord[DIM];
public:
// Somme de deux vecteurs
Vector operator+(Vector b);
// Difference de deux vecteurs
Vector operator-(Vector b);
// Multiplication scalaire * vecteur
Vector operator*(double lambda);
Vector operator/(double lambda);
// Produit scalaire de deux vecteurs
double operator*(Vector b);
// Norme d'un vecteur
double Norm();
// Rotation (angle en degres)
Vector Rotate(double angle);
double get_x();
double get_y();
void set_x(double valx);
void set_y(double valy);
};
J'ai déjà passé 4h sur ce problème et ai utilisé le débogueur, mais je n'arrive pas à modifier ce qui ne va pas...
Honnêtement, ce n'est pas de la mauvaise volonté, il doit juste y avoir quelque chose que j'ai mal compris, sûrement par rapport à la manipulation des coordonnées dans la fenêtre...
C'est tres light comme description du probleme. Qu'est ce qui se passe ? Tu as une erreur de compilation ? Un crash ? Un comportement pas attendu ? Si oui, quel est le comportement que tu observes ?
Si c'est un probleme de comportement pas correct, commences par écrire des tests unitaires.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Discord NaN. Mon site.