comment creer une matrice plus que 2 dimension en c++?
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

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



  1. #1
    invitec1a727b3

    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.

    -----

  2. #2
    invite895675d5

    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. #3
    invite025015c2

    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. #4
    invitec1a727b3

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

    Merci beaucoup.

  5. A voir en vidéo sur Futura
  6. #5
    invitec1a727b3

    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

  7. #6
    Jack
    Modérateur

    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 à 14h49.

  8. #7
    invitec1a727b3

    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;
    }

Discussions similaires

  1. Matrice!! comment monter que une matrice est inversible!!!
    Par invite68a51119 dans le forum Mathématiques du supérieur
    Réponses: 12
    Dernier message: 28/07/2017, 20h36
  2. 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, 18h46
  3. Réponses: 1
    Dernier message: 21/09/2009, 17h26
  4. comment créer une temporisation
    Par invite4aaac55b dans le forum Électronique
    Réponses: 32
    Dernier message: 29/10/2007, 10h57
  5. Comment créer une deuxième adresse
    Par invite23950fd4 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 6
    Dernier message: 05/10/2005, 13h55