[C] Probleme affichage tableau caractères

Résolu
flop91 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
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 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
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 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
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   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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   Statut Membre Dernière intervention   1
 
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