Structures itératives

Bonjour,

je révise et tente de faire le programme suivant :

Ecrire un programme qui affiche un triangle isocèle de $n$ lignes, rempli d'étoiles. Exemple :

hauteur : 6

*
***
*****
*******
*********
***********
(le triangle est isocele, il y a des espaces avant les étoiles)

Je l'ai déjà fais en cours, mais je n'y arrive pas dès qu'il y a une histoire d'espace (que ce soit ce genre de triangle ou les carré par exemple).

J'ai écris cela :

#include <stdio.h>
#include <stdlib.h>

int main(void){

int ligne,hauteur,espace;

printf("Hauteur du triangle : ");
scanf("%d",&hauteur);

for(ligne=0;(hauteur-1-ligne)>0;ligne++){
printf(" ");
for(ligne=0;((ligne+1)*2)<(hauteur*2+1);ligne++){
printf("*");}
printf("\n");}

return EXIT_SUCCESS;

}

Mais, évidemment ca ne marche pas, 2h que je modifie, recommence à zéro, j'essaie de trouverle truc sur papier, je bloque à chaque fois, donc là je demande votre aide.

merci
Configuration: Linux
Firefox 3.0.15

3 réponses

  1. Une structure du type:
    for (ligne=0; ...; ligne++)
    {
      for (ligne=0;...; ligne++)
        ...
    }
    ne fonctionne jamais... sauf exception bien sûr.
    Bonne réflexion.
    1. J'trouve absolument rien, surtout la 2eme boucle qui me pose probleme.
      1. Insère un 'printf' tel que:
        for (ligne=0; ...; ligne++)
        {
          for (ligne=0;...; ligne++)
          {
            printf ("ligne = %d", ligne);
            ...
          }
          ...
        }
        et essaie de comprendre le résultat.
        Bonne réflexion.
    2. J'ai réussi, voilà mon prog final :

      #include <stdio.h>
      #include <stdlib.h>

      int main(void){

      int ligne,hauteur,espace,etoile;

      printf("Hauteur du triangle : ");
      scanf("%d",&hauteur);

      for(ligne=0;ligne<hauteur;ligne++)
      {
      for(espace=0;espace<hauteur-1-ligne;espace++)
      {
      printf(" ");
      }
      for(etoile=0;etoile<1+2*ligne;etoile++)
      {
      printf("*");
      }
      printf("\n");
      }

      return EXIT_SUCCESS;

      }