Afficher un losange
Magnou
Messages postés
68
Statut
Membre
-
amigo -
amigo -
Bonjour,
J'ai des difficultés a afficher un losange c'est a dire finir le programme et compilé sur C++. Le problème est que quand je compile et je donne une hauteur n si le nombre est pair le programme affiche (2n-1). hors la réalité est que le nombre le plus petit pour afficher un losange(avec des étoiles) est 3 de plus n ne peu qu'être impaire.
Je voudrais savoir comment programmer pour ne pas afficher 2n-1 et que le plus petit nombre soit 3
voila ce que j'ai fait sur C++
#include <stdio.h>
#include<conio.h>
int main ()
{
int i,j,n,N;
printf("Entrez la hauteur du losange svp:");
printf("\n Hauteur=");
scanf("%d",&n);
for (i=1; i<=n; i++)
{
for (j=0; j<n-i; j++)
{
printf (" ");
}
for (j=1; j<= (i*2-1); j++)
{
printf("*");
}
printf ("\n");
}
for (i=1; i<=n-1; i++)
{
for (j=0; j<i; j++)
{
printf(" ");
}
N=2*(n-i)-1;
for(j=1;j<=N; j++)
{
printf("*");
}
printf("\n");
}
getch();
return(0);
}
J'ai des difficultés a afficher un losange c'est a dire finir le programme et compilé sur C++. Le problème est que quand je compile et je donne une hauteur n si le nombre est pair le programme affiche (2n-1). hors la réalité est que le nombre le plus petit pour afficher un losange(avec des étoiles) est 3 de plus n ne peu qu'être impaire.
Je voudrais savoir comment programmer pour ne pas afficher 2n-1 et que le plus petit nombre soit 3
voila ce que j'ai fait sur C++
#include <stdio.h>
#include<conio.h>
int main ()
{
int i,j,n,N;
printf("Entrez la hauteur du losange svp:");
printf("\n Hauteur=");
scanf("%d",&n);
for (i=1; i<=n; i++)
{
for (j=0; j<n-i; j++)
{
printf (" ");
}
for (j=1; j<= (i*2-1); j++)
{
printf("*");
}
printf ("\n");
}
for (i=1; i<=n-1; i++)
{
for (j=0; j<i; j++)
{
printf(" ");
}
N=2*(n-i)-1;
for(j=1;j<=N; j++)
{
printf("*");
}
printf("\n");
}
getch();
return(0);
}
Configuration: Windows XP Firefox 2.0.0.13
2 réponses
-
bonjour,
Avec une boucle do ... while, ça devrait marcher.
do
{
printf("Entrez la hauteur du losange svp (entier impair >= 3):");
printf("\n Hauteur=");
scanf("%d",&n);
}
while (((n % 2) > 0) || (n < 3)) ;/* % -> reste de la division entiere*/
Salut. -
Pardon, je crois que c'est plutot
while (((n % 2) == 0) || (n < 3)) ;/* % -> reste de la division entiere*/