Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Invité régulier
    Homme Profil pro
    Inscrit en
    juin 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juin 2012
    Messages : 30
    Points : 5
    Points
    5

    Par défaut C++-tableau a 2 dimensions en argument

    Bonjour,

    alors avant tou voici mon code:


    main.cpp
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #include <iostream>
    #include "Sudoku.h"
    #include <boost/multi_array.hpp>
     
    int main()
    {	
    	typedef boost::multi_array<int,2> grille;
    	grille grille2(boost::extents[9][9]);
    	int i;
    	grille2[9][9]={
    		{9,0,0,1,0,0,0,0,5},
    		{0,0,5,0,9,0,2,0,1},
    		{8,0,0,0,4,0,0,0,0},
    		{0,0,0,0,8,0,0,0,0},
    		{0,0,0,7,0,0,0,0,0},
    		{0,0,0,0,2,6,0,0,9},
    		{2,0,0,3,0,0,0,0,6},
    		{0,0,0,2,0,0,9,0,0},
    		{0,0,1,9,0,4,5,7,0}
    	};
    	Sudoku sud(grille2[9][9]);
    }
    Sudoku.cpp

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #include <iostream>
    #include "Sudoku.h"
     
    Sudoku::Sudoku(int grille[][])
    {
    	int size_1, size_2, i, j;
    	/*for(i=0; i<9; ++i)
    		for(j=0; i<9; ++j)
    			m_grille[i][j]=grille[i][j];*/
    }
     
    void Sudoku::afficher()
    {
    	int size_1, size_2, i, j;
    	for(i=0; i<9; ++i)
    	{
    		std::cout << std::endl;
    		for(j=0; j<9; ++j)
    			std::cout << m_grille[i][j] << " ";
    	}
     
    }
    Sudoku.h
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <iostream>
    #include <vector>
     
    class Sudoku
    {
    	public:
    		Sudoku(int grille[][]);
    		void afficher();
    	private:
    		int** m_grille;
    };
    et le retour du compilateur

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [ 50%] Building CXX object CMakeFiles/../bin/Sudoku.dir/home/scriptor/Programmation/Sudoku/src/main.cpp.o
    In file included from /home/scriptor/Programmation/Sudoku/src/main.cpp:2:0:
    /home/scriptor/Programmation/Sudoku/src/Sudoku.h:7:23: erreur: declaration of ‘grille’ as multidimensional array must have bounds for all dimensions except the first
    /home/scriptor/Programmation/Sudoku/src/main.cpp: In function ‘int main():
    /home/scriptor/Programmation/Sudoku/src/main.cpp:20:2: attention : extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
    /home/scriptor/Programmation/Sudoku/src/main.cpp:20:2: erreur: cannot convert ‘<brace-enclosed initializer list>’ to ‘int’ in assignment
    make[2]: *** [CMakeFiles/../bin/Sudoku.dir/home/scriptor/Programmation/Sudoku/src/main.cpp.o] Erreur 1
    make[1]: *** [CMakeFiles/../bin/Sudoku.dir/all] Erreur 2
    make: *** [all] Erreur 2
    Avant d'en arriver la j'effectue plusieurs tests, et d'après mes recherches il semblerait que les tableaux a deux dimensions et plus soient gérés différemment en c++. En effet j'ai l'improssion que le problème se pose au niveau de la grille2, et son passage e argument, mais je n'arrive pas à régler mon problème. Voilà pourquoi j'en appelle à vous.

    Merci de toutes réponses

  2. #2
    Expert Confirmé Sénior Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    24 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 24 128
    Points : 35 209
    Points
    35 209

    Par défaut

    Bonjour,
    1. Ceci n'est pas du C++/CLI, seulement du C++
    2. On ne peut déclarer de tableaux à deux dimensions dynamiques en C++ (ni en C, d'ailleurs). Par contre:
      • Tu peux faire un tableau de pointeurs, pointant chacun vers un tableau dynamique ou vers différents points d'un tableau dynamique (voir images). C'est typiquement ce qu'on fait en C.
      • tu peux faire un vecteur de vecteurs ou utiliser un boost::multi_array dans tout ton programme. C'est plus "C++".
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •