IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Declaration de tableaux à 3 dimensions.


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Declaration de tableaux à 3 dimensions.
    Bonjour j'essaye de coder un labyrinthe à 3 dimensions. Pour cela je declare mon tableau comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    constexpr size_t WIDTH(3);
     
    constexpr size_t HEIGHT(3);
     
    constexpr size_t DEPTH(3);
     
    constexpr char COLUMN('o');
     
    constexpr char FREE('-');
     
    constexpr char START('1');
     
    constexpr char EXIT('2');
     
    typedef array<array<array<char, WIDTH>, HEIGHT>, DEPTH> Maze;
    puis je l'initialise avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    Maze Persia =
     
    {
     
    {
     
    { '1', '.', '.' },
     
    { 'o', 'o', '.' },
     
    { '.', '.', '.' }
     
    },
     
    {
     
    { 'o', 'o', 'o' },
     
    { '.', '.', 'o' },
     
    { '.', 'o', 'o' }
     
    },
     
    {
     
    { 'o', 'o', 'o' },
     
    { 'o', '.', '.' },
     
    { 'o', '.', '2' }
     
    }
     
    };
    et au moment de la compilation j'ai un message du type

    maze.cc:56:2: error: too many initializers for 'Maze {aka std::array<std::array<std::array<char, 3ul>, 3ul>, 3ul>}'

    Je n'arrive pas à résoudre le problème. Merci d'avance pour vos aides et suggestions.

  2. #2
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 739
    Points : 3 627
    Points
    3 627
    Par défaut
    Il faut doubler les accolades. {{ {{ {{'x', ...}}, ... }}, ... }}. La première pour initialiser le membre (tableau) de array et la seconde pour initialiser les éléments du tableau. S'il n'y a pas cette double accolade, le compilateur essaye d'initialiser 3 membres présents std::array ce qui provoque une erreur.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci jo_link_noir,

    Effectivement, c'est ce que j'ai fait hier et ca marche parfaitement.

  4. #4
    Membre averti Avatar de RPGamer
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Mars 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués

    Informations forums :
    Inscription : Mars 2010
    Messages : 168
    Points : 395
    Points
    395
    Par défaut
    Salut,

    Tu as surement meilleurs temps de faire ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    using Maze = array<char, WIDTH * HEIGHT * DEPTH>;
     
    Maze persia = {
       '1', '.', '.',
       'o', 'o', '.',
       '.', '.', '.',
       'o', 'o', 'o'
       // ...
    };
     
    char get(size_t x, size_t y, size_t z)
    {
       return persia[x + WIDTH * y + WIDTH * HEIGHT * z];
    }

  5. #5
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    Juste une petite question en passant (non, en fait, j'ai deux questions à poser ) :

    • Pourquoi voudrais tu avoir un tableau trois dimensions on n'aime déjà pas vraiment travailler avec un tableau à deux dimensions (on préférera souvent le linéariser pour le transformer en un tableau à dimension unique), mais, alors, à trois dimensions!!! ...
    • Ne pourrais tu pas envisager de "modéliser" les lignes de ton tableau sous la forme d'une structure adéquate cela te permettrait de retomber sur un tableau 2D que... tu pourrais envisager de linéariser
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. [Tableaux] mémoriser un tableaux à n dimension
    Par Benat64 dans le forum Langage
    Réponses: 4
    Dernier message: 21/02/2006, 16h43
  2. declaration de tableaux
    Par allowen dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 21/02/2006, 15h06
  3. [Tableaux] Gerer des tableaux à deux dimensions
    Par FrankOVD dans le forum Langage
    Réponses: 2
    Dernier message: 02/12/2005, 15h20
  4. Tableaux à plusieurs dimensions
    Par Diabolik dans le forum Assembleur
    Réponses: 3
    Dernier message: 08/12/2003, 12h15
  5. [langage] erreurs utilisation tableaux 2 dimensions
    Par drosof dans le forum Langage
    Réponses: 11
    Dernier message: 01/07/2003, 11h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo