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 :

Création d'une classe Tableau2d


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 187
    Par défaut Création d'une classe Tableau2d
    Bonjour,
    Je dois créer une classe Tableau à 2D d'entiers (Array) divisée dans un fichier .h et un .cpp
    Ma classe ressemblera donc à ceci:

    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
     
    class Array {
    	int ** array;
    	unsigned nbLig;
    	unsigned nbCol;
     
    public:
    	//Constructeurs
    	Array(unsigned nbL=1, unsigned nbC=1, int valInit=0);
    	Array(const Array & a);
     
    	//Destructeur
    	~Array();
     
    	//Surcharge affectation
    	Array & operator= (const Array & a);
     
    	//Accesseurs
    	unsigned getNbLig() const;
    	unsigned getNbCol() const;
    };
    J'ai un petit problème pour mon constructeur avec 3 paramètres: je dois donc créer un tableau dynamique interne à 2D et pouvoir utiliser dans les autres méthodes de la classe l'écriture: array[x][y] pour accéder aux entiers.

    Voici mon constructeur, j'initialise nbLig et nbCol mais il me reste à créer le tableau et initialiser chaque case avec valInit... :

    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
     
    Array::Array(unsigned int nbL, unsigned int nbC, int valInt)
    {
    	if(nbL==0)
    		nbLig=1;
    	else
    		nbLig=nbL;
     
    	if(nbC==0)
    		nbCol=1;
    	else
    		nbCol=nbC;
     
    .........????????????.............
    }
    Merci d'avance et bonne soirée.

  2. #2
    Membre éprouvé Avatar de Nhaps
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 350
    Par défaut
    Une double boucle for suffit pour initialiser chaque case du tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for( uint i = 0; i < nbLig; ++i)
    	for( uint j = 0; j < nbCol; ++j)
    		array[i][j] = valInt;

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 187
    Par défaut
    Merci, cela semble aller.
    Mais pour la création du tableau à 2D dynamique? Pouvez vous m'aider?

    Merci d'avance.

  4. #4
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    FAQ ?
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #5
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Bonjour,

    pour allouer ton tableau il faut d'abord allouer les pointeurs sur ligne, puis les colonnes. Cela donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Array(unsigned nbL, unsigned nbC, int valInit)
    {
        nbLig = nbL;
        nbCol = nbC;
        array = new int*[nbL]; // creation des lignes
        for (int i=0;i<nbL;++i)
        {
            array[i] = new int[nbC]; // création des colonnes
            for (int j=0;j<nbC;++j)
                array[i][j] = valInit;
        }
    }
    Cette écriture te permet de comprendre le principe de construction mais il est plus performant de passer par des listes d'initialisation comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Array(unsigned nbL, unsigned nbC, int valInit)
        :nbLig(nbL),nbCol(nbC),array(new int*[nbL])
    {
        for (int i=0;i<nbL;++i)
        {
            array[i] = new int[nbC]; // création des colonnes
            for (int j=0;j<nbC;++j)
                array[i][j] = valInit;
        }
    }

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    La version de la FAQ est robuste...
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

Discussions similaires

  1. Création d'une classe ASP (connection & recordset)
    Par polothentik dans le forum ASP
    Réponses: 1
    Dernier message: 12/03/2008, 00h46
  2. [POO] création d'une classe de connexion
    Par artotal dans le forum Langage
    Réponses: 1
    Dernier message: 14/02/2008, 12h01
  3. Réponses: 3
    Dernier message: 06/05/2007, 19h46
  4. [C++] Création d'une classe dans un fichier
    Par Pfeffer dans le forum C++Builder
    Réponses: 1
    Dernier message: 02/05/2007, 15h49
  5. Création d'une class contenant un TEdit (Débutant)
    Par Dereck07 dans le forum Delphi
    Réponses: 5
    Dernier message: 01/05/2007, 17h02

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