Sousou91000, dryker Logiciels : okman Achat - Vente Informatique : 2coor, ydantwak et 64 utilisateurs inconnus
fetard Profil : Jeune recrue | 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;
}
|
lukefab meuh Profil : Habitué | tu serais pas en train de melanger passage par reference et passage par copie? |
myst nono powered © Profil : Vieux de la vieille | -> void essai(int z[30][30][30])) ---------------
Fondateur de la CuRseD TeAm
|
made_in_asia Profil : Membre | Sinon Fetard, au lieu de faire essai(z) dans ton main, fais essai(&z).
Ca permet de faire passer la référence. |
myst nono powered © Profil : Vieux de la vieille | 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
|
marc_ba Hein ? Profil : Membre | 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 *** |
myst nono powered © Profil : Vieux de la vieille | 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
|
made_in_asia Profil : Membre | 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 ? |
myst nono powered © Profil : Vieux de la vieille | moi je propose ca :
Code :
- #include <iostream>
- void essai(int[10][10][10]);
- int main(int argc, char** argv)
- {
- int z[10][10][10];
- essai(z);
- std::cout << z[1][2][3] << std::endl;
- return 0;
- }
- void essai(int z[10][10][10])
- {
- z[1][2][3] = 3;
- }
| ---------------
Fondateur de la CuRseD TeAm
|
lacousine_c++ Profil : Jeune recrue | 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 !!!!
|