Exercice langage C: Fonctions double

1. Ecrivez une fonction qui affiche un triangle d'étoiles, et qui prend en paramètre le nombre de lignes du triangle:

         *
       ***
      *****

2. Utilisez cette fonction pour afficher un sapin:

        *
      ***
        *
      ***
     *****
        *
      ***
     *****
    *******
        *

Vous devrez certainement modifier un peu la fonction écrite au point 1) afin que votre sapin ressemble à celui dessiné ci-dessus.

 


1. Tout l'intérêt de l'exercice réside dans la recherche de la relation entre le numéro de ligne et le nombre d'espaces et d'étoiles. Si est le numéro de ligne, commençant à 0, et lignes le nombre de lignes, le nombre d'espaces est donné par lignes-i-1 et le nombre d'étoiles par 2*i+1.

1
2
3
4
5
6
7
8
9
10
11
void dessine_etage(int lignes) 
{
  for (int i = 0; i < lignes; i++) 
  {
    for (int j = 0; j < lignes - i - 1; j++)
     cout << " ";
    for (int j = 0; j < i * 2 + 1; j++)
     cout << "*";
   cout << endl;
  }
}

2. Pour obtenir le même dessin que sur l'énoncé, il faut décaler les étages du sapin en ajoutant des espaces suppléntaires. Une solution consiste à légèrement modifier la fonction  dessine_etageen lui ajoutant un paramètre spécifiant le nombre d'espaces supplémentaires.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include 

using namespace std;

void dessine_etage(int lignes, int espaces) 
{
  for (int i = 0; i < lignes; i++) {
    for (int j = 0; j < espaces + lignes - i - 1; j++)
     cout << " ";
    for (int j = 0; j < i * 2 + 1; j++)
     cout << "*";
   cout << endl;
  }
}

int main(int argc, char **argv) {
  dessine_etage(2, 2);
  dessine_etage(3, 1);
  dessine_etage(4, 0);
  dessine_etage(1, 3);

  return 0;
}