Triangle inversé et Encadré

Résolu
MirakRIM Messages postés 23 Statut Membre -  
MirakRIM Messages postés 23 Statut Membre -
Bonjour,

Je dois faire un programme qui permet de tracer un triangle inversé d'étoiles, encadré à gauche et à droite par des "|"; en haut et en bas par des "-". Le nombre d'étoiles de la base du triangle tant entré au clavier, ce nombre doit être strictement positif et impair, deplus je ne sais utiliser que les boucles pour l'instant :/ Merci pou votre aide

ex : si on entre 19 au clavier on doit avoir :


Comme vous pouvez le remarquer il y a deux "-" de plus que le nombre d'étoile de base : ici 19 étoile donc 21 "-" en haut et en bas. Voila aider moi svp, j'ai essayer en utilisant des for mais mon programme de ne marche pas le voila :

int main()
{
int i;
int j;
int n;

printf("Saisir un nombre d'étoile : ");
scanf("%d", &n);

/* while ((n<1) | (n%2=0))
{ printf("Erreur, Saisir un nouveau nombre");
scanf("%d", &n);
} */

for (i=1; i=n+2; i++)
{ printf("-"); }

for (i=1; i=((n/2)+1); i++)
{ printf("|");

for (j=1; j=(i-1); j++)
{
printf(" ");
}

for (j=1; j=(n-(2*(i-1))); j++)
{
printf("*");
}

for (j=1; j=(i-1); j++)
{
printf(" ");
}

printf("|\n");
}

for (i=1; i=(n+1); i++)
{ printf("-"); }

return 0;
}

3 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,

    /* while ((n<1) | (n%2=0))
    Il vaut mieux utiliser l'opérateur || (OU Booléen).
    L'opérateur de comparaison en C est == (et non =). Cela donne donc
    while (n<1 || n%2==0)


    for (i=1; i=n+2; i++)
    Même erreur, l'opérateur de comparaison est ==. Généralement, on met plutôt i<=n+2.
    Note : en C, généralement on commence à i=0 (donc i<n+2 dans ce cas).
    Ce qui donne :
    for(i=0; i<n+2; i++)

    Je te laisse corriger pour les autres boucles for.

    N'oublie pas un '\n' juste avant ton return 0;

    Note : merci la prochaine fois d'utiliser la balise "code c" pour poster ton code.
    Exemple :
    <code c>ici tu mets ton code</code>

    Cdlt,
    1
  2. MirakRIM Messages postés 23 Statut Membre
     
    Merci, pour cette réponse rapide, j'ai apporté les corrections que tu ma dis mais j'ai un nouveau soucis, maintenant le programme marche mais il doit y avoir encore des erreurs dedans car voila ce qui en sort lorsque je tape 11 par exemple :



    et voila mon code corriger

    int main()
    {
    int i;
    int j;
    int n;

    printf("Saisir un nombre d'étoile : ");
    scanf("%d", &n);

    while (n<1 || n%2==0)
    { printf("Erreur, Saisir un nouveau nombre");
    scanf("%d", &n);
    }

    for (i=0; i<n+2; i++)
    { printf("-"); }

    printf("\n");

    for (i=0; i<((n/2)+2); i++)
    { printf("|");

    for (j=0; j<(i-1); j++)
    {
    printf(" ");
    }

    for (j=0; j<(n-(2*(i-1))); j++)
    {
    printf("*");
    }

    for (j=0; j<(i-1); j++)
    {
    printf(" ");
    }

    printf("|\n");
    }

    for (i=0; i<(n+1); i++)
    { printf("-"); }

    printf ("\n");

    return 0;
    }
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Pour les balises, tu as oublié le c (code c) et non (code). ;-)
      0
    2. MirakRIM Messages postés 23 Statut Membre
       
      Ah ok j'y manquerais pas la prochaine fois. Merci :)
      0
  3. MirakRIM Messages postés 23 Statut Membre
     
    Ah non c'est bon merci j'ai trouver mon erreur i=1 dans le 2éme for merci de m'avoir aider
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Yep, c'était bien ça ;-).
      0