Exercice langage C corrigé fonction arbre

Exercice langage C corrigé

Reprenez le programme vu en cours et permettant de dessiner un arbre :

#include 
#include "swindow.h"

void dessine_arbre(SimpleWindow * window,
		   int x1, int y1, int x2, int y2, int nb_niveaux)
{
  window->drawLine(x1, y1, x2, y2);

  if (nb_niveaux > 0) {
    int vx = 0.8 * (x2 - x1);
    int vy = 0.8 * (y2 - y1);
    float angle = 30 * 3.14159 / 180;
    int xA = x2 + cos(angle) * vx - sin(angle) * vy;
    int yA = y2 + sin(angle) * vx + cos(angle) * vy;
    int xB = x2 + cos(-angle) * vx - sin(-angle) * vy;
    int yB = y2 + sin(-angle) * vx + cos(-angle) * vy;

    dessine_arbre(window, x2, y2, xA, yA, nb_niveaux - 1);
    dessine_arbre(window, x2, y2, xB, yB, nb_niveaux - 1);
  }
}

int main(int argc, char ** argv)
{
  const int longueur = 500;
  const int hauteur  = 500;

  SimpleWindow window("arbre", longueur, hauteur);
  window.map();

  // Remplit la fenetre en blanc:
  window.color(1, 1, 1);
  window.fill();

  // Dessine en noir:
  window.color(0, 0, 0);

  // Instructions de dessin:
  dessine_arbre(&window, 250, 450, 250, 350, 5);

  window.show();

  getchar();

  return 0;
}

Comment modifier le programme pour que les segments les plus petits soient affichés en vert, le reste de l’arbre étant toujours affiché en noir ?

La correction exercice langage C (voir page 2 en bas)

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *