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

Fermé
ppp31 - 5 oct. 2021 à 22:16
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 7 oct. 2021 à 20:03
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 dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
Modifié le 7 oct. 2021 à 20:05
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