Triangle inversé et Encadré

Résolu
MirakRIM Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -  
MirakRIM Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -
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

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