Remplissage d'un tableau dans un struct

Gui693 - 17 nov. 2013 à 17:47
cptpingu
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
- 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
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
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