Accueil > Enseignement > Anciens cours (avant 2015-2016) > Éléments d’informatique (L1 cours, TD, TP, 2008-2012+) > EI : correction du TP 4 figures d’étoiles

EI : correction du TP 4 figures d’étoiles

jeudi 4 octobre 2012, par Pierre

èléments d’informatique, correction des exercices du quatrième TP où il était question de créer des motifs à base d’étoiles (le jeudi 4 octobre 2012 pour le groupe 3).

Pour le premier programme, on doit afficher largeur lignes de chacune longueur etoiles. On applique donc un algorithme dépendant de deux quantités largeur et longueur (qui seront deux variables) et qui fera :

 répéter largeur fois

  • afficher une ligne de longueur étoiles puis un saut de ligne de la façon suivante :
    • répeter longueur fois afficher une étoile
    • afficher un saut de ligne

Cela donne le code suivant :

Dans cette répétition i est un numéro de ligne (les lignes sont numérotées de haut en bas). Sachant cela il est très simple de modifier l’algorithme précédent pour obtenir le demi-carré d’étoiles. En effet, à la première ligne on affiche une étoile, à la seconde ligne deux étoiles, à la troisième ligne trois étoiles, etc. À la dernière ligne, numérotée coté, il y a coté étoiles.

L’algorithme devient donc :
 répéter coté fois

  • afficher une ligne de i étoiles, où i est le numéro de ligne, puis un saut de ligne de la façon suivante :
    • répeter i fois afficher une étoile
    • afficher un saut de ligne

Cela donne le code suivant :

Pour le deuxième demi-carré il faut remarquer que chaque ligne doit commencer par des espaces. On peut alors soit compter le bon nombre d’espaces à afficher en début de ligne et ajouter ces espaces à l’aide d’un for supplémentaire soit décider à l’aide des valeurs de i, j et de coté si on affiche une étoile ou un espace (cette solution sera plus facile à adapter à d’autres problèmes).
Compter le nombre d’espaces sur une ligne n’est pas compliqué : le nombre d’étoiles reste le même que précédemment, c’est i, et le nombre total de caractère (espaces plus étoiles) est nécessairement coté. Il y a donc coté - i espaces sur la ligne de numéro i.

L’algorithme devient :
 répéter coté fois

  • afficher une ligne de cote - i espaces et i étoiles, où i est le numéro de ligne, puis un saut de ligne de la façon suivante :
    • répeter cote - i fois afficher un espace
    • répeter i fois afficher une étoile
    • afficher un saut de ligne

Cela donne le code suivant :

L’autre solution est de remarquer que i et j dans le premier programme sont un système de coordonnées pour l’affichage. Il suffit donc de décider en fonction de i et j (et coté) ce qui doit être affiché.
L’algorithme devient :
 répéter coté fois (selon i)

  • afficher une ligne de cote caractères puis un saut de ligne de la façon suivante :
    • répeter coté fois (selon j)
      • si (j <= cote - i) afficher un espace sinon afficher une étoile
    • afficher un saut de ligne

Cela donne le code suivant :

Portfolio