Forum Clubic

Tableau de caractères en C

Salut!
Voila, j’initialise un tableau de caractères en C avec que des espaces (à l’aide de 2 boucles for), pour ensuite initialiser uniquement la première colonne avec des X (c’est pour faire un jeu de Nim en fait :wink: )

Le problème c’est que au lieu de m’afficher les caractères, il m’affiche leurs codes ASCII, ce qui ne me sert franchement à rien ^^

Comment puis-je faire?

Merci :slight_smile:
Edité le 23/04/2009 à 23:17

[


int main()
{
char tab[1][10];
int idx1, idx2;

    // init
    for (idx1 = 0; idx1 < 1; idx1++)
        for (idx2 = 0; idx2 < 10; idx2++)
            tab[idx1][idx2] = ' ';

    // init 1ere colonne
    for (idx2 = 0; idx2 < 10; idx2++)
        tab[0][idx2] = 'X';

    // affichage
    for (idx2 = 0; idx2 < 10; idx2++)
        printf("%c\n", tab[0][idx2]);


    fgetc(stdin);

	return 0;
}

:neutre:

Merci pour ton aide :slight_smile:
Mais toi, pour l’affichage, ça affiche uniquement la première ligne non?
" printf("%c\n", tab[0][idx2]);"
ou alors il faut remplacer 0 par idx1?

Voila le code que j’ai fais moi:


#include <stdio.h>
#include <stdlib.h>
main ()
{
  int b=1;
  int i,j;
  char tableau[5][5];
  char a;
  
  for(i=0;i<=5;i++)
  {
  for(j=0;j<=5;j++) tableau[i][j]=' ';
  }
    
  printf("JEU DE NIM\n");
  printf("1) Jouer\n");
  printf("2) Regles\n");
  printf("3) Quitter\n");
  a=getchar(); 
  while(b)
    {
       switch(a)
	   {     
	         case '1':
             {
             for(i=0;i<=5;i++) tableau[i][0]='X';
    
             for (i=0;i<=5;i++)
             {
                 for(j=0;j<=5;j++) printf(" %d |",tableau[i][j]);
                 printf("\n");
             }
             system("PAUSE");
             }
             b=0;
             case '2':printf("Menu 2\n");b=0;break;
             case '3':printf("Menu3\n");b=0;break;
    }
    }
}


Et voici ce que ça me sort…

http://img10.imageshack.us/img10/643/nimg.jpg

Suffit de remplacer ‘%d’ par ‘%c’ dans ton printf :wink:

OMG o_O
Tain mais comment j’ai pu ne pas y penser…

Bon en tout cas ça marche merci :slight_smile:

Me reste encore à trouver pourquoi j’ai une 6 colonne à droite ^^
Je ferais ça demain :slight_smile:

Merci encore et bonne nuit ^^

Pas compliqué pour la sixième colonne :

for (int i = 0; i <= 5; ++i) == 6 itérations.

effectivement caytay ça :stuck_out_tongue:
merci!

Bonjour à tous!
Voila je reviens avec un autre problème…
Pour faire marcher “l’intelligence artificielle”, on doit utiliser des tableaux ayant cette forme: (exemple)

2 3 0 2 3 0 2 3 0 2 3 0
3 0 1 3 0 1 3 0 1 3 0 1
2 1 0 2 1 0 2 1 0 2 1 0
2 3 0 2 3 0 2 3 0 2 3 0
3 0 1 3 0 1 3 0 1 3 0 1
2 1 0 2 1 0 2 1 0 2 1 0

Il faut pour ça partir d’en bas à droite, remplir ligne par ligne, vers le haut…
J’ai donc pour ça fait ceci:

k=N;//lignes

    while(k>=0)
    {
        j=M;//colonnes
        while(j>0)
            {
                T1[j-1][N-1]=0;
                T1[j-2][N-1]=1;
                T1[j-3][N-1]=2;
                j=j-3;
            }
        j=M;//colonnes
        while(j>0)
        {
                T1[j-1][N-2]=1;
                T1[j-2][N-2]=0;
                T1[j-3][N-2]=3;
                j=j-3;
        }
        j=M;//colonnes
        while(j>0)
        {
                T1[j-1][N-3]=2;
                T1[j-2][N-3]=3;
                T1[j-3][N-3]=0;
                j=j-3;
        }
        k=k-3;
    }

Le problème est que la première boucle while (la grande) fonctionne, mais pas les petites… Je ne vois vraiment pas pourquoi, j’ai tout essayé, mon binome également, en vain…
Je reprends l’exemple d’avant mais en vous mettant ce que le programme me sors pour que vous compreniez bien :wink:

0 0 0 0 0 0 0 0 0 2 3 0
0 0 0 0 0 0 0 0 0 3 0 1
0 0 0 0 0 0 0 0 0 2 1 0
0 0 0 0 0 0 0 0 0 2 3 0
0 0 0 0 0 0 0 0 0 3 0 1
0 0 0 0 0 0 0 0 0 2 1 0

Petite précision, le tableau est déclaré comme un tableau d’entiers, initialisé avec des 0.
Le N affecté à k est le nombre de lignes, saisi par l’utilisateur, et le M affecté à j est le nombre de colonnes, saisi également par l’utilisateur…

Merci pour votre aide!
eYo

edit: désolé mais je vois que le forum ne prend pas les tabulations de mon code… ça fait un peu moins digeste comme ça xD
Edité le 23/04/2009 à 23:14

ptit up :smiley:

Mais pas pour moins de 24h. Prochain up, je ferme le topic pendant 24h.
Edité le 24/04/2009 à 21:05

je crois avoir trouvé quelque chose… mais je peux pas le faire moi car j’ai codé ça sur codeblocks qui ne veut pas compiler sur mon pc, j’appelle mon binome pour qu’il test (mais là il est à un concert donc je saurais que demain xD)

Je vais lui dire de remplacer WHILE(k>=0) par WHILE (K>=3) et les N-1/-2/-3 des petits while par K-1/-2/-3 …

Qu’en pensez vous?