voila mon problème : je fais un programme des plus basiques avec une tableau à deux dimensions et je voudrais y calculer quelquechose mais dans une fonction sauf que au moment de compiler on me dit : erreur : la valeur indicée n'est ni un tableau ni un pointeur.
alors voila mon programme :
Code :
#include<stdio.h>
void affiche(int tableau[3][2])
{
int i,j;
for(j=0;j<2;j++)
{
for(i=0;i<3;i++)
{
printf("%i \t",tableau[i][j]);
}
printf("\n" );
}
}
void calcule(int *p)
{
*p[0][0]=0;
}
int main (void)
{
int tableau[3][2]={{1,90},{3,4},{5,6}};
affiche(tableau);
calcul(tableau);
affiche(tableau);
}
Publicité
Posté le 18-04-2008 à 17:20:53
Joel F
Real men use unique_ptr
Posté le 18-04-2008 à 20:54:34
et ca serait cool de nous dire pr quelle ligne
tpierron
Posté le 18-04-2008 à 21:13:10
Bah, au hasard, je dirais la ligne 19. Bon, ta fonction calcule est foireuse, ce qui est étrange car ta fonction affiche() est correcte. Pourquoi ne pas t'être calqué sur celle-ci pour écrire calcule() ?
olivthill
Posté le 19-04-2008 à 10:47:22
Tout à ait d'accord avec l'intervenant précédent, il aurait préférable de calquer calcul sur affiche.
Sinon, je crois qu'au lieu de
*p[0][0]=0;
il suffirait d'avoir
p[0][0]=0;
Message édité par olivthill le 19-04-2008 à 21:24:15
jesus_christ
votre nouveau dieu
Posté le 19-04-2008 à 11:17:39
non :
p[ 0 + 2 * 0 ] = 0;
pour acceder à la case (i,j) depuis un int*, c'est
p[ i + 2 * j ];
jesus_christ
votre nouveau dieu
Posté le 19-04-2008 à 11:20:21
précision : ici le 2 vient du type int[3][2]
en règle générale, mieux vaut passer un tableau en paramètre plutôt qu'un int*, histoire que ce soit + clair et que ce soit le compilo qui fasse les calculs d'indice. Et évite de passer la première dimention, elle ne sert à rien.
void affiche(int tableau[][2])
{
...
}
Trap D
Posté le 19-04-2008 à 13:50:15
Un compilo bien réglé devrait râler ici
Code :
void calcule(int *p)
{
*p[0][0]=0;
}
comme déjà signalé et là
Code :
int tableau[3][2]={{1,90},{3,4},{5,6}};
affiche(tableau);
calcul(tableau); <===
car le prototype de calcul est
void calcule(int *p)
Message édité par Trap D le 19-04-2008 à 13:53:29
benjolebarbar
Posté le 21-04-2008 à 10:20:53
bon vous pourriez pas etre plus clair parce que c'est pas que je comprend rien mais bon ..... je suis débutant aussi !!! vous pourriez pas me mettre ce que je dois écrire explicitement ?????
Message édité par benjolebarbar le 21-04-2008 à 10:21:26
gilou
Modérateur Modzilla
Posté le 21-04-2008 à 10:23:01
Le forum n'est pas la pour resoudre les exercices a la place de celui qui doit les faire, mais pour expliquer ce qui ne va pas. Voir le reglement du forum a ce sujet.
A+,
---------------
There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! --
benjolebarbar
Posté le 21-04-2008 à 11:54:04
non mais oh t'es fou ou quoi ? je dois faire un démineur et j'ai un probleme pour faire une fonction. j'ai pas bien capté ce qu'on ecrit les autres!! j'ai parler d'un démineur ?? j'ai pas demandé de me faire le programme du demineur non ??? non alors arrete d'agresser les gens espece d'abruti tu connait pas ma vie !!!!!!!!! A+
non mais oh t'es fou ou quoi ? je dois faire un démineur et j'ai un probleme pour faire une fonction. j'ai pas bien capté ce qu'on ecrit les autres!! j'ai parler d'un démineur ?? j'ai pas demandé de me faire le programme du demineur non ??? non alors arrete d'agresser les gens espece d'abruti tu connait pas ma vie !!!!!!!!! A+
Bon ben je crois qu'il n'y a plus rien à ajouter !
delphin2
Soyons libre de droit
Posté le 21-04-2008 à 16:57:33
# void calcule(int *p)
# {
# *p[0][0]=0;
Il faut que tu passes un tableau en paramètre comme a dit trap d
non mais oh t'es fou ou quoi ? je dois faire un démineur et j'ai un probleme pour faire une fonction. j'ai pas bien capté ce qu'on ecrit les autres!! j'ai parler d'un démineur ?? j'ai pas demandé de me faire le programme du demineur non ??? non alors arrete d'agresser les gens espece d'abruti tu connait pas ma vie !!!!!!!!! A+