[C] Probleme affichage tableau caractères

Résolu/Fermé
flop91 Messages postés 2 Date d'inscription mercredi 29 novembre 2006 Statut Membre Dernière intervention 30 novembre 2006 - 29 nov. 2006 à 23:58
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 30 nov. 2006 à 11:19
Bonjour,

J'ai un petit programme pour afficher un tableau de caractere 20*20 vide dont le contour est fait de #.

Je le compile tout va bien, mais quand la fenetre dos me l'affiche, j'ai une représentation en ligne du tableau.

Comment je peux lui donner un forme de carre? D'ou vient mon problème?
En esperant que je suis assez clair. Merci d'avance

#include <stdio.h>
#include <stdlib.h>

void main (void)
{
int i;
int j;
char tableau[22][22];


for(i=0; i<22; i++)
{
for(j=0; j<22; j++)
{
tableau[i][j] = ' ';
}
}

for(i=0; i<22; i++)
{
tableau[i][0] = '#';
tableau[i][21] = '#';
}
for(j=0; j<22; j++)
{
tableau[0][j] = '#';
tableau[21][j] = '#';
}

for(i=0; i<22; i++)
{
for(j=0; j<22; j++)
{
printf("%c", tableau[i][j]);
}
}

}
A voir également:

4 réponses

mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
30 nov. 2006 à 09:21
Exact. Tu peux améliorer encore ton programme :
#include <stdio.h>
#include <stdlib.h>

int main()
{
    unsigned int i;
    unsigned int j;
    const unsigned int imax=22,jmax=22;
    char tableau[imax][jmax];

    for(i=0; i<imax; ++i){
        for(j=0; j<jmax; ++j){
            tableau[i][j] = ' ';
        }
    }

    for(i=0; i<imax; ++i){
        tableau[i][0] = '#';
        tableau[i][jmax-1] = '#';
    }
    for(j=0; j<jmax; ++j){
        tableau[0][j] = '#';
        tableau[imax-1][j] = '#';
    }

    for(i=0; i<imax; ++i){
        for(j=0; j<jmax; ++j){
            printf("%c", tableau[i][j]);
        }
        printf("\n");
    }
    return 0;
}

Le imax et jmax rendent plus lisible le programme et permette de changer facilement les dimensions du tableau. Actuellement tu alloues de manière statique ton tableau 22*22 mais avec des malloc tu verras qu'il est facile de spécifier dynamiquement ses dimensions.

Attention à ne pas oublier les headers et à bien retourner le code d'éexecution dans ton main pour être standard.

Bonne chance
6
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
30 nov. 2006 à 01:08
Salut,

A la fin, après la fermeture de boucle de la ligne, mets un saut ligne:
 for(i=0; i<22; i++)
{
        for(j=0; j<22; j++)
        {
                printf("%c", tableau[i][j]);
         } 
         printf("\n");
}
3
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
30 nov. 2006 à 11:19
Salut,

Pas facile les petites astuces comme ca quand on débute :-).

Pas difficile non plus :-)). Lit ce tuto Apprenez à programmer en C / C++ !, mais c'est vrai que pour Miss et Kilian c'est plus facile vu leur experience.

lami20j
2
flop91 Messages postés 2 Date d'inscription mercredi 29 novembre 2006 Statut Membre Dernière intervention 30 novembre 2006 1
30 nov. 2006 à 09:40
Merci beaucoup à vous maintenant ca marche, ca faisait une journée que je galérais dessus!! Pas facile les petites astuces comme ca quand on débute :-).
Encore merci.
1