Triangle inversé et Encadré

Résolu/Fermé
MirakRIM Messages postés 22 Date d'inscription jeudi 23 octobre 2014 Statut Membre Dernière intervention 16 novembre 2014 - Modifié par MirakRIM le 23/10/2014 à 16:46
MirakRIM Messages postés 22 Date d'inscription jeudi 23 octobre 2014 Statut Membre Dernière intervention 16 novembre 2014 - 23 oct. 2014 à 19:11
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
23 oct. 2014 à 17:06
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 jeudi 23 octobre 2014 Statut Membre Dernière intervention 16 novembre 2014
Modifié par MirakRIM le 23/10/2014 à 17:37
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
23 oct. 2014 à 18:37
Pour les balises, tu as oublié le c (code c) et non (code). ;-)
0
MirakRIM Messages postés 22 Date d'inscription jeudi 23 octobre 2014 Statut Membre Dernière intervention 16 novembre 2014
23 oct. 2014 à 19:11
Ah ok j'y manquerais pas la prochaine fois. Merci :)
0
MirakRIM Messages postés 22 Date d'inscription jeudi 23 octobre 2014 Statut Membre Dernière intervention 16 novembre 2014
23 oct. 2014 à 17:40
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
23 oct. 2014 à 18:37
Yep, c'était bien ça ;-).
0