Remplissage d'un tableau dans un struct

Signaler
-
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
-
Salut, je cherche a creer un petit jeu qui necessite une grille, que j'ai décider de representer par un tableau de taille 8*8, dans une structure voici pour l'instant mon code:

struct plateau
{
char cases[8][8];
};

typedef struct plateau plateau;


const char B='B';
const char N='N';
const char V='X';

plateau P1;

P1.cases =
{
{V,V,V,V,V,V,V,V},
{V,V,V,V,V,V,V,V},
{V,V,V,V,V,V,V,V},
{V,V,V,B,N,V,V,V},
{V,V,V,N,B,V,V,V},
{V,V,V,V,V,V,V,V},
{V,V,V,V,V,V,V,V},
{V,V,V,V,V,V,V,V}
};

Seulement le compilateur m'indique une erreur juste en dessous de P1.cases
Si j'écris char cases[8][8] a la place de P1.cases, ca fonctionne et il crer bien un tableau de char, mais ici comme il est dans un struct ca n'a pas l'air de marcher.
L'erreur exacte est "expected expression before '{' token", pas très parlant...

Si quelqu'un ici aurait une idée, je lui en serait reconnaissant, merci d'avance

1 réponse

Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
114
Bonjour.

Si c'est en C (ne fonctionnera pas en C++), tu peux faire ceci:

#include <stdio.h>

static const char B = 'B';
static const char N = 'N';
static const char V = 'X';

typedef struct
{
  int i;
  char cases[8][8];
  double d;
} Plateau;

int main()
{
  Plateau p1 =
    {
      0, /* i */
      { /* cases */
 {V,V,V,V,V,V,V,V},
 {V,V,V,V,V,V,V,V},
 {V,V,V,V,V,V,V,V},
 {V,V,V,B,N,V,V,V},
 {V,V,V,N,B,V,V,V},
 {V,V,V,V,V,V,V,V},
 {V,V,V,V,V,V,V,V},
 {V,V,V,V,V,V,V,V}
      },
      12.5 /* d */
    };

  printf("%c\n", p1.cases[3][3]);

  return 0;
}


Pour du C++, il faut faire ceci:
#include <iostream>

namespace
{
  const char B = 'B';
  const char N = 'N';
  const char V = 'X';
} // namespace

struct Plateau
{
  Plateau()
    : i(0),
    cases({
 {V,V,V,V,V,V,V,V},
 {V,V,V,V,V,V,V,V},
 {V,V,V,V,V,V,V,V},
 {V,V,V,B,N,V,V,V},
 {V,V,V,N,B,V,V,V},
 {V,V,V,V,V,V,V,V},
 {V,V,V,V,V,V,V,V},
 {V,V,V,V,V,V,V,V}
      }),
      d(12.5)
  {
  }

  int i;
  char cases[8][8];
  double d;
};

int main()
{
  Plateau p1;

  std::cout << p1.cases[3][3] << std::endl;

  return 0;
}