Bonjour, cliquez-ici pour vous inscrire et participer au forum.
  • Login:



+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

comment creer une matrice plus que 2 dimension en c++?

  1. aydi

    Date d'inscription
    juillet 2008
    Messages
    70

    comment creer une matrice plus que 2 dimension en c++?

    bonsoir,

    je veux créer une matrice à n dimensions.
    par exemple en matlab lorsque je veux créer(initialiser) plusieurs matrices de nombre inconnu (n) de taille chacun (l,m) donc je fais comme ça
    k = zeros(l,m,n);

    lorsque je veux obtenir la matrice 3 de taille (l,m) juste j'écris k(l,m,3);

    sa semble au feuilles de cahiers l'une sur l'autre. juste je connais le numéro de page(n) donc je peux accéder au page voulu(matrice de taille (l,m))

    je veux faire ça en c++.

    Merci d'avance.
     


    • Publicité



  2. bzh_nicolas

    Date d'inscription
    avril 2010
    Messages
    1 713

    Re : comment creer une matrice plus que 2 dimension en c++?

    Une matrice d'entier statique à 3 dimension par exemple te donnera :
    Code:
    int maMatrice[taille_dimension1][taille_dimension2][taille_dimension3];
    pour un tableau dynamique à 3 dimension ça va donner quelque chose du genre :
    Code:
    int ***maMatrice;
    int ind1, ind2;
    
    maMatrice = new int** [taille_dimension1];
    for(ind1=0 ; ind1 < taille_dimension1 ; ind1++)
    {
      maMatrice[ind1] = new int* [taille_dimension2];
      for (ind2=0 ; ind2 < taille_dimension2 ; ind2++)
      {
         MaMatrice[ind1][ind2] = new int [taille_dimension3];
      }
    }
    Pour la supprimer, j'ai un doute
    je crois que
    Code:
    delete[][][] maMatrice;
    fonctionne (mais j'ai pas testé)
    sinon il faut parcourir avec les boucles imbriquées :
    Code:
    for (ind1=0 ; ind1 < taille_dimension1 ; ind1++)
    {
      for (ind2=0 ; ind2 <taille_dimension2 ; ind++)
      {
        delete [] maMatrice[ind1][ind2];
      }
      delete [] maMatrice[ind1];
    }
    delete [] maMatrice;
     

  3. Marthi

    Date d'inscription
    décembre 2010
    Messages
    17

    Re : comment creer une matrice plus que 2 dimension en c++?

    Ou alors, faire appel a la STL :

    Code:
    std::list<int, std::list<int, int>> myVar;
    Faut utiliser les methode qui vont avec, c'est sur :

    .push_back() pour ajouter, .append() pour chercher.
     

  4. aydi

    Date d'inscription
    juillet 2008
    Messages
    70

    Re : comment creer une matrice plus que 2 dimension en c++?

    Merci beaucoup.
     

  5. aydi

    Date d'inscription
    juillet 2008
    Messages
    70

    Re : comment creer une matrice plus que 2 dimension en c++?

    bonsoir,

    j'ai appliqué votre methode de creartion de tableau statique dans une strcture. car j'ai besion d'une fonction qui peut retourner un tableau. avec des dimensions faible sa marche mais lorsque j'augmente la taille du tableau il apparait une erreur.

    Unhandled exception at 0x004afb37 in exercice.exe: 0xC00000FD: Stack overflow.

    comment je peux resoudre ce probleme. stack averflow
    j'ai besoin d'un tableau comme ca et meme parfois plus: {
    int tab[112][128][123];
    };

    avec matlab sa marche sans probleme

    pourquoi avec visual c++ non?

    Merci d'avance
     


    • Publicité



  6. Jack

    Date d'inscription
    avril 2003
    Localisation
    Metz
    Messages
    12 156

    Re : comment creer une matrice plus que 2 dimension en c++?

    Les variables statiques étant stockées dans la pile, tu occupes donc rien que pour le tableau plus de 7 Mo, ce qui me semble beaucoup pour la pile.

    Il va donc surement falloir travailler avec des tableaux dynamiques qui vont eux se retrouver dans le tas.

    A+
    Dernière modification par Jack ; 24/12/2010 à 13h49.
     

  7. aydi

    Date d'inscription
    juillet 2008
    Messages
    70

    Re : comment creer une matrice plus que 2 dimension en c++?

    Citation Envoyé par Jack Voir le message
    Les variables statiques étant stockées dans la pile, tu occupes donc rien que pour le tableau plus de 7 Mo, ce qui me semble beaucoup pour la pile.

    Il va donc surement falloir travailler avec des tableaux dynamiques qui vont eux se retrouver dans le tas.

    A+
    Merci tout d'abord.

    voila mon code.

    comment je peux le corrigé.
    Code:
    #include <math.h>
    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct tabdedans{
     int tab[112][128][123];
     };
    
    //2 eme FONCTION 
    tabdedans fonc2(tabdedans arg,int r,int m,int n)
    
    {
    	int i,j,k;
    	double x=n*m*r;
    	for(int k=0;k<123;k++)
    	 {
    		for(int i=0;i<112;i++)
    			for(int j=0;j<128;j++)
    			{
    
    	arg.tab[i][j][k]=x+arg.tab[i][j][k] ;
    			}
    	}
    	return arg;
    }
    //fin fonc2
    tabdedans fonc(tabdedans arg,int rayonmin,int ny)
     {	
    	 int mx=3;	 
    		for(int j=0;j<123;j++)
    			{
    		 arg=fonc2(arg,rayonmin+j,mx,ny);
    			}
    	 
     return arg ;
     }
     //findeclaration fonction qui retourne un tableau
    int main()
    	
    {
    
    	  tabdedans stab= {0},stab1 ; //remplissage à 0 de la structure, donc du tableau
    
    	 // stab=(tabdedans) malloc(sizeof(tabdedans));
    
    	  stab=fonc(stab,3,9);
    
    	  for(int k=0;k<123;k++)
    	 {
    		for(int i=0;i<112;i++)
    			for(int j=0;j<128;j++)
    			{
    		 
    		 printf("satb[%d][%d][%d]=%d\n",i,j,k,stab.tab[i][j][k]) ;//limpide ! 
    		 
    			}
    	 } 
    
       return 0;
    }
     


    • Publicité




Poursuivez votre recherche :




Sur le même thème :




 

Discussions similaires

  1. Comment créer une adresse e-mail
    Par Fistos dans le forum Internet - Réseau - Sécurité générale
    Réponses: 10
    Dernier message: 26/07/2010, 17h46
  2. Matrice!! comment monter que une matrice est inversible!!!
    Par mirabilisjalapa dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 15/01/2010, 22h58
  3. Réponses: 1
    Dernier message: 21/09/2009, 16h26
  4. comment créer une temporisation
    Par Paillasse25 dans le forum Électronique
    Réponses: 32
    Dernier message: 29/10/2007, 09h57
  5. Comment créer une deuxième adresse
    Par roro123 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 6
    Dernier message: 05/10/2005, 12h55