Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

Sousou91000, dryker Logiciels : okman Achat - Vente Informatique : 2coor, ydantwak et 64 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

probleme de matrice

 
n°8423
fetard
Profil : Jeune recrue
Posté le 27-05-2004 à 22:45:39  profilanswer
 

Bonsoir à tous,
 
je voudrais savoir comment on utilise la matrice à plus de deux dimensions car mmon compilateur me dit qu'il y a des erreurs par exemple :
 
#include<stdio.h>
#include<conio.h>
 
void essai(int *z);
 
void main(void)
{
 
int z[30][30][30];
 
essai(z); //le compilateur me dit que la syntaxe est fausse. Alors quel est le bon ?
 
printf("%d\n\n", z[1][2][3]);
}
 
void essai(int *z)
{
z[1][2][3]=3;
}

n°8424
lukefab
meuh
Profil : Habitué
Posté le 28-05-2004 à 00:11:02  profilanswer
 

tu serais pas en train de melanger passage par reference et passage par copie?

n°8429
myst
nono powered ©
Profil : Vieux de la vieille
Posté le 28-05-2004 à 09:14:40  profilanswer
 

-> void essai(int z[30][30][30]))


---------------
Fondateur de la CuRseD TeAm
n°8475
made_in_as​ia
Profil : Membre
Posté le 29-05-2004 à 10:26:21  profilanswer
 

Sinon Fetard, au lieu de faire essai(z) dans ton main, fais essai(&z).
 
Ca permet de faire passer la référence.

n°8477
myst
nono powered ©
Profil : Vieux de la vieille
Posté le 29-05-2004 à 11:20:22  profilanswer
 

ca changera rien... comment est ce que tu passes les deux autres dimensions ?
il faut preciser que y'a 3 dimensions, et fixer leur taille, sinon ca marchera pas...


---------------
Fondateur de la CuRseD TeAm
n°8482
marc_ba
Hein ?
Profil : Membre
Posté le 30-05-2004 à 11:11:29  profilanswer
 

myst a écrit :

ca changera rien... comment est ce que tu passes les deux autres dimensions ?
il faut preciser que y'a 3 dimensions, et fixer leur taille, sinon ca marchera pas...


Je suis un peu surpris des réponses; le seul pb, c'est que z n'est pas un int* mais un int ***

n°8483
myst
nono powered ©
Profil : Vieux de la vieille
Posté le 30-05-2004 à 15:28:35  profilanswer
 

marc_ba a écrit :


Je suis un peu surpris des réponses; le seul pb, c'est que z n'est pas un int* mais un int ***


euh... et alors ? tu proposes quoi ?


---------------
Fondateur de la CuRseD TeAm
n°8491
made_in_as​ia
Profil : Membre
Posté le 31-05-2004 à 17:47:03  profilanswer
 

Si tu passes que la référence, c'est-à-dire l'adresse, tu as normalement la possibilité de récupérer toutes les données à partir de cette adresse, donc les 3 dimensions. Non ?

n°8492
myst
nono powered ©
Profil : Vieux de la vieille
Posté le 31-05-2004 à 18:55:36  profilanswer
 

moi je propose ca :  
 

Code :
  1. #include <iostream>
  2. void essai(int[10][10][10]);
  3. int main(int argc, char** argv)
  4. {
  5. int z[10][10][10];
  6. essai(z);
  7. std::cout << z[1][2][3] << std::endl;
  8. return 0;
  9. }
  10. void essai(int z[10][10][10])
  11. {
  12. z[1][2][3] = 3;
  13. }


---------------
Fondateur de la CuRseD TeAm
n°9667
lacousine_​c++
Profil : Jeune recrue
Posté le 25-07-2004 à 19:19:43  profilanswer
 

moi je peux proposer quelque chose dans ce style :  
 
 
ceci est une fonction qui crée un tableau dynamique à 3 dimensions.
 
int *** creatematrix3d( int X, int Y, int Z)
{
        int ***name;
 
        name=new int **[Z];
        for( int i=0; i < Z; i++ )
        {
                 name[i]=new int*[Y];
        }
     
        for( int j=0; j < Z; j++ )
        {
              for( int i=0; i < Y; i++)
               {
                   name[j][i]=new int[X];
               }
         }
         return name;
}
 
 
 
ATTENTION, moi j'ai du utiliser un constructeur par copie lorsque j'ai utilisé cette fonction, car l'opérateur new l'oblige en visual studio.net
 
 


---------------
Mieux vaut poser une question et paraitre blonde, que de ne pas poser sa question et l'être !!!!

Aller à :
Ajouter une réponse