OVH Cloud OVH Cloud

ou est mon erreur

4 réponses
Avatar
jjabon
bonjour, voila, je suis sous devc++ et j'arrive pas a compiler ce prog
(en fait, le prob est que je n'arrive pas a passer un tableau superieur
a une dimention a une fonction) pourtant, j'ai tout fait comme il disent
dans le cours???


#include <iostream>
using namespace std;


void ecriture(int V)
{
for(int i =0;i<10;++i)
for(int e =0;e<10;++e)
V[i][e] = e;
}

main()
{
int E[10][10];
ecriture(E);
}

voici les erreur qu'il me met

c:\dev-c_~1\progra~1\exer.cpp: In function `void ecriture(int)':
c:\dev-c_~1\progra~1\exer.cpp:9: invalid types `int[int]' for array
subscript
c:\dev-c_~1\progra~1\exer.cpp: In function `int main()':
c:\dev-c_~1\progra~1\exer.cpp:15: passing `int (*)[10]' to argument 1 of
`ecriture(int)' lacks a cast

merci

4 réponses

Avatar
Benoit Rousseau
jjabon wrote:
bonjour, voila, je suis sous devc++ et j'arrive pas a compiler ce prog
(en fait, le prob est que je n'arrive pas a passer un tableau superieur
a une dimention a une fonction) pourtant, j'ai tout fait comme il disent
dans le cours???


#include <iostream>
using namespace std;


void ecriture(int V)
{
for(int i =0;i<10;++i)
for(int e =0;e<10;++e)
V[i][e] = e;
}

main()
{
int E[10][10];
ecriture(E);
}

void ecriture( int** V ) {...}

un tableau à deux dimensions est un tableau de tableaux.
int *V correspond à un tableau à une dimension.


--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/

Avatar
.oO LGV Oo.
"Benoit Rousseau" a écrit dans le message de
news:3fa030b6$0$256$
jjabon wrote:
bonjour, voila, je suis sous devc++ et j'arrive pas a compiler ce prog
(en fait, le prob est que je n'arrive pas a passer un tableau superieur
a une dimention a une fonction) pourtant, j'ai tout fait comme il disent
dans le cours???


#include <iostream>
using namespace std;


void ecriture(int V)
{
for(int i =0;i<10;++i)
for(int e =0;e<10;++e)
V[i][e] = e;
}

main()
{
int E[10][10];
ecriture(E);
}

void ecriture( int** V ) {...}

un tableau à deux dimensions est un tableau de tableaux.
int *V correspond à un tableau à une dimension.


--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/



et si ça compilait avec une seule dimension, c'est parcequ'un tableau est un
pointeur, et qu'un pointeur est une adresse, autrement dit une valeur
entière qui colle tres bien avec un int...


Avatar
Michel Michaud
Dans news:3fa030b6$0$256$, Benoit
jjabon wrote:
bonjour, voila, je suis sous devc++ et j'arrive pas a compiler ce
prog (en fait, le prob est que je n'arrive pas a passer un tableau
superieur a une dimention a une fonction) pourtant, j'ai tout fait
comme il disent dans le cours???



Si ça ressemble vraiment à ce qu'« ils » disent dans le cours, alors
il n'a pas de chance...



#include <iostream>
using namespace std;


void ecriture(int V)
{
for(int i =0;i<10;++i)
for(int e =0;e<10;++e)
V[i][e] = e;
}



Pourquoi cette fonction s'appelle-t-elle ecriture ?


main()



int main()

{
int E[10][10];
ecriture(E);
}

void ecriture( int** V ) {...}

un tableau à deux dimensions est un tableau de tableaux.
int *V correspond à un tableau à une dimension.


Non, et de toute façon int** n'est pas compatible avec une utilisation
en tant que tableau de tableau... Le plus simple, puisqu'on sait qu'on
passe un 10x10 est

void Ecriture(int V[10][10])

(mais évidemment le mot « simple » ne s'applique pas aux
tableaux à la C ! En tout cas, pas sur fclc++...)

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Avatar
kanze
".oO LGV Oo." wrote in message
news:<bnr2se$qji$...
"Benoit Rousseau" a écrit dans le message de
news:3fa030b6$0$256$
jjabon wrote:
bonjour, voila, je suis sous devc++ et j'arrive pas a compiler ce
prog (en fait, le prob est que je n'arrive pas a passer un tableau
superieur a une dimention a une fonction) pourtant, j'ai tout fait
comme il disent dans le cours???

#include <iostream>
using namespace std;

void ecriture(int V)
{
for(int i =0;i<10;++i)
for(int e =0;e<10;++e)
V[i][e] = e;
}




Un int n'est pas un tableau ; c'est normal que ça ne marche pas.

main()
{
int E[10][10];
ecriture(E);
}


void ecriture( int** V ) {...}

un tableau à deux dimensions est un tableau de tableaux. int *V
correspond à un tableau à une dimension.



Un pointeur n'est pas un tableau ; ça ne va pas marcher mieux.

et si ça compilait avec une seule dimension, c'est parcequ'un tableau
est un pointeur, et qu'un pointeur est une adresse, autrement dit une
valeur entière qui colle tres bien avec un int...


Ce qu'il a écrit ne compile pas avec une dimension non plus. Aussi :

- un tableau n'est pas un pointeur, au moins pas en C ou en C++ (il
l'était en B), et

- une adresse n'est pas une valeur entière, au moins pas en C ou en
C++. (Elle peut l'être au niveau machine, mais ce n'est pas toujours
le cas non plus.)

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16