Remplissage d'un tableau dans un struct

Gui693 - 17 nov. 2013 à 17:47
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 17 nov. 2013 à 19:30
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

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
Modifié par cptpingu le 17/11/2013 à 21:14
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;
}
0
Rejoignez-nous