Bonjour, je m'entraine a créer un programme qui demande a l'utilisateur d'entrer la largeur d'un carré, puis la hauteur, et j'affiche ce carré a l'écran. Evidemment si je poste, c'est que je n'y arrive pas, surtout pour le côté droit du carrée.
Voici ce que j'ai fais (ca affiche juste 2 côtés du carré) :
#include <stdlib.h>
void carre();
void main()
{
carre(5, 5);
}
void carre()
{
int x, y, i, j, k;
printf("Donnez une valeur pour x :\n");
scanf("%d", &x);
printf("Donnez une valeur pour y :\n");
scanf("%d", &y);
for(i=0; i<x; i++)
printf("B");
printf("\n");
for(j=0; j<y-1; j++)
printf("B\n");
}
Donc si vous pouvez m'expliquer comment faire les autres côtés, et surtout le côté droit ! Je précise que l'intérieur du carré doit rester vide, pour x = 5 et y = 3, je devrais par exemple avoir :
ABBBC
B-----B
CBBBA
(Les "-" ne doivent pas apparaitre, ca doit être du vide).
pour x = 6 et y = 4 j'aurais
ABBBBC
B-----B
B-----B
CBBBBA
En un petit peu plus simple mais beaucoup moins joli (et en reprenant les remarques de Foxhound sur le prototype):
void carre(int x, int y)
{
int i, j;
printf("\n");
//On dessine le carré de haut en bas
for(j=1; j <= y; j++)
{
//Pour chaque ligne, on dessine le carré de gauche à droite
for(i=1; i <= x; i++)
{
//Si on est à la première ou dernière ligne, on dessine
//Si on est tout à gauche ou tout à droite, on dessine
if(j==1 || j==y || i==1 || i==x)
{
printf("B");
}
//Sinon, on met une case vide
else
{
printf(" ");
}
}//Fin de la deuxième boucle (de gauche à droite)
//On passe à la ligne suivante
printf("\n");
}//Fin de la première boucle (de haut en bas)
}
J'ai juste une remarque : Le code de Foxhound est très bien, je ne dois pas avoir les mêmes caractères dans les coins, donc son code est bon. Par contre si je fais x = 1 et y = 1, je dois avoir "B" et ton code me met 4 caractères, comment arranger cela ?
comme ca : if(j==1 || j==y || i==1 || i==x)
{
printf("B");
}
??
Le code de Stinson est très bien aussi, j'aime bin la simplicitée, mais par contre ton code met uniquement un seul caractères, je dois avoir un truc genre ca :
ABBC
B--B
CBBA
Comment changer les caractères des angles ?
Merci.
PS : C'est pas grave si c'est un rectangle, on doit pouvoir mettre x = 10 et y = 233 si on veut, donc on aura un rectangle.
Bourrinement, je dirais de mettre des if en plus. Quand tu vas pour écrire un B, tu refais un if, pour voir si tu dois écrire un B, ou bien un A ou un C.
Voila ce que j'ai fais et qui fonctionne :
if(i==1 && j==1) printf("A");
else if (i==x && j==1) printf("C");
else if (i==1 && j==y) printf("C");
else if (i==x && j==y) printf("A");
else if(j==1 || j==y || i==1 || i==x)
{
printf("B");
}
Dessiner un carré en console
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html