C++ : programmer un triangle isocèle en cpp

ppp31 -  
Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je viens de débuter le c++ (premier langage avec des bases niveau lycée en python) et je veux programmer un triangle isocèle avec des étoiles.

Je l'ai fait avec un triangle isocèle rectangle.
Comme il s'agit d'un triangle isocèle il y a autant d'étoiles que de lignes j'ai utilisé la boucle for :

extrait du programme :

int n;
cout<<"nombre de ligne(s) : ";
cin>> n;
for (int i=1 ; i <= n ; i++)
{
{ for (int j=1 ; j<= i ; j++)
cout<<"*";
}
cout<<endl;
}

Si n=3, le programme affichera :
*


Maintenant je souhaite le modifier pour avoir ça (avec toujours l'utilisateur qui choisira n, le nombre de lignes) :
*


à chaque fois il y a n-1 d'espace, c'est-à-dire : pour n=3 :
  • (j'ai fait n-1 espaces = 3-1 espaces = 2 espaces)
    • (1espace)
      • ( 0 espace)


D'après ce que j'ai compris il faut donc que j'intègre quelque part dans le programme : for (int e = n-1; e==0; e--) pour les espaces (si j'ai bien compris) mais je ne comprends pas :
- où le placer dans le programme
- s'il suffit d'accompagner cout<<e*endl (si ça existe) pour qu'il y ait les espaces

en bref je suis embrouillé et à chaque fois que je tente de me débloquer, j'en suis encore davantage embrouillé.

Merci pour votre aide.

1 réponse

Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
Bonjour,

Le nombre d'espaces doit être mis à l'intérieur de la boucle sur i et avant la boucle sur j qui affiche les étoiles.
Es-tu sûr du nombre d'espaces à produire?
Et en effet, il existe un moyen simple de générer N espaces ou N étoiles. Il existe un constructeur de
std::string
qui fait cela.
int  n;
std::cout << "nombre de ligne(s) : ";
std::cin >> n;
for ( int i = 1 ; i <= n ; i+=2 )
{
    std::cout << std::string( (n-i)/2 , ' ' );
    std::cout << std::string( i , '*' );
    std::cout << std::endl;
}
0