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 :

Allocation dynamique de tableau de dimensions variables


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    106
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 106
    Par d�faut Allocation dynamique de tableau de dimensions variables
    Bonjour;
    Je cherche � allouer dynamiquement un tableau dont toutes les dimensions sont variables. Pour un tableau dont seul le nombre de lignes varie, je proc�de 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    int main()
    {
    	int k;
    	float x;	 
    	int cpt=0;	//Compteur de colonnes
    	int cpt1 = 0;//compteur de lignes
     
    	ifstream data("D:\\SignauxTexte\\donnes.txt",ios::in);
    	cout<<"donner une valeur: ";
    	cin>>k;
    	float (*Matrice)[100] =new float[k][100]; //Matrice de k lignes de 100 colonnes
    	while(true)
       {
       data >> x; 
       // test si fin de fichier atteinte
       if(data.eof() == true)
          break; 	
    	if(k!=0)
    	{	
    		if(cpt>=100){cpt=0;} // réinitialisation du compteur de colonnes
    		else
    		{
    			if(cpt1<k)
    			{
    			Matrice[cpt1][cpt] = x; //Remplissage de la matrice
    			cout<<"["<<cpt1<<" "<<cpt<<"]"<<" "<<Matrice[cpt1][cpt]<<endl;
    			cpt++;
    			if(cpt==99){cpt1++;}
    			}
     
    		}
     
     
    	}
     
    	}
    	delete[] Matrice;
    	return 0;
     
    }
    Maintenant je souhaite entrer la seconde dimension de mon tableau comme la premi�re au clavier. J'ai lu des cours o� on dit qu'il faut utiliser un tableau de pointeurs mais je ne sais pas comment proc�der (je ne m'en sors pas avec les pointeurs). je voulais aussi savoir comment est-ce possible de faire varier le nombre de colonnes en gardant celui des lignes fixe.
    D'avance merci pour votre aide.

  2. #2
    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
    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...

  3. #3
    Membre �clair� Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Par d�faut
    Jette un coup d'oeil � la FAQ, sinon sur internet tu doit trouver des exemples de Matrices dynamiques.

    Pour d�clarer un tableau de pointeur tu rajoute une �toile.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    float * Matrice ou float Matrice[] //Tableau de float
    float ** Matrice ou float * Matrice[] ou float Matrice[][] //Tableau de pointeurs sur float

  4. #4
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

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

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    boost multi_array

  5. #5
    Membre �clair� Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Par d�faut
    Citation Envoy� par loufoque Voir le message
    boost multi_array
    Pourquoi faire simple quand on peut faire compliquer ?

  6. #6
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Salut,

    De mani�re g�n�rale, il faut �viter le recours � l'allocation dynamique si tu peux faire autrement... ou, du moins, laisser les classes dont on peut partir du principe qu'elles la g�re mieux que toi s'en occuper.

    Alors qu'il n'y a pas le choix en C, le C++ fournit une s�rie de conteneurs dont on est sur que la gestion de la m�moire les concernant se fera parfaitement.

    L'id�e est donc de n'utiliser l'allocation dynamique de la m�moire que lorsqu'il s'agit de cr�er une instance d'une classe donn�e alors que le pointeur que l'on utilise est du type d'une classe de base (pour impl�menter le polymorphisme, principalement )...ou en cas d'absolue n�cessit�
    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

  7. #7
    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
    Citation Envoy� par SmOkEiSBaD Voir le message
    Pourquoi faire simple quand on peut faire compliquer ?
    Parce que ce que tu crois simple n'est nullement robuste ? (tu verrais vite � quel point ce n'est pas trivial sinon)

    @OP, boost.multi_array, stlsoft.array2D, etc. Les choix ne manquent pas.
    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...

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 9
    Dernier message: 12/06/2007, 14h15
  2. [d�butant] un tableau de dimension variable selon l'objet qui le contient
    Par Epistocles dans le forum Collection et Stream
    R�ponses: 5
    Dernier message: 09/01/2007, 18h07
  3. R�ponses: 2
    Dernier message: 14/12/2006, 15h34
  4. R�ponses: 6
    Dernier message: 26/11/2005, 19h55
  5. R�ponses: 4
    Dernier message: 03/12/2002, 16h47

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