Comment faire modifier par une fonction 1 tableau de structure ?

Comment faire modifier par une fonction 1 tableau de structure ? - Programmation

Marsh Posté le 14-01-2001 à 02:04:36    

J'ai une structure "Joue", composée de deux entiers :
int Rouge;
int Jaune;
J'ai un tableau, tab_jeu, à deux dimension, 7 et 6.
Or ce tableau est un tableau de structure :
Joue tab_jeu[7][6];
Comment puis-je faire pour appeler une fonction qui va le modifier, et non en modifier une copie ?
 
Exemple :
Si j'apelle Modif(tab_jeu) et que je lui fait modifier "tab_jeu" (le tableau de structure), les modifs ne portent pas sur l' "original" ...ss
 
Merci d'avance...
Nrv :-)

Reply

Marsh Posté le 14-01-2001 à 02:04:36   

Reply

Marsh Posté le 14-01-2001 à 02:11:43    

Euh, ça fait longtemps que je n'ai plus fait de C mais pour passer par référence, c'est pas quelque chose du genre :
Modif(&tab_jeu) :confused:

Reply

Marsh Posté le 14-01-2001 à 02:15:27    

Merci pour la réponse aussi rapide.
Non, ce paramettre est valable dans le cas d'un "int", d'un "float" ou ...
Mais pas pour un tableau, hélas encore moins pour un tableau à plusieurs dimensions...
Pour un tableau de structure à plusieurs dimensions, ... :-)
Merci tout de même, mais Visual C++ est formel :-)
Nrv

Reply

Marsh Posté le 14-01-2001 à 02:21:51    

T'es sûr que ça ne marche pas :confused:
Je viens de vérifier dans mes vieux programmes et ça a l'air de fonctionner avec n'importe quel type...
 
Vérifie la syntaxe du prototype de ta fonction Modif, il faut aussi lui rajouter le & je pense.

Reply

Marsh Posté le 14-01-2001 à 02:27:51    

Nan attends,
C'est pas à l'appel de la fonction qu'il faut le mettre mais uniquement dans la déclaration de celle ci.
Ca devrait être quelquechose comme "Modif (Joue[][] &tab_jeu)"

Reply

Marsh Posté le 14-01-2001 à 02:29:12    

A la déclaration : il faut mettre des "&" ou des "*" ?ss
* : ce qui est désigné par une adresse
& : adresse dess
Dans le proto, je met quoi ?
Dans le Mes_Fonctions.cpp, je met quoi pour la définission de Modif ?
Et à l'appel, je prends quoi comme syntaxe ?
Merci beaucoup !
Nrv

Reply

Marsh Posté le 14-01-2001 à 02:37:48    

Attends, c'est pas du genre :
Modif(Joue tab_jeu[7][6])
Pour un tableau de 2 dim, on doit déclarer les dims.
Et c'est le tab qui est de 7*6. Mais mon compileur refuse systématiquement... Tu es sur de toi ?ss
Dans ce cas, je met quoi dans :
- le proto ?
- la définition (première ligne = celle du proto ?)
- l'appel ?
Merci beaucoup en tout cas de te donner ce mal à cette heure ...
Nrv :-)

Reply

Marsh Posté le 14-01-2001 à 02:37:49    

Pour résumer, d'après mes vieux souvenirs, je mettrais :
 
- pour la déclaration : Modif (Joue[][] &tab_jeu)
- à l'appel Modif(tab_jeu)
 
Mais je n'en suis pas du tout sûr :rolleyes:

Reply

Marsh Posté le 14-01-2001 à 02:39:14    

Attends, c'est pas du genre :
Modif(Joue tab_jeu[7][6])
Pour un tableau de 2 dim, on doit déclarer les dims.
Et c'est le tab qui est de 7*6. Mais mon compileur refuse systématiquement... Tu es sur de toi ?ss
Dans ce cas, je met quoi dans :
- le proto ?
- la définition (première ligne = celle du proto ?)
- l'appel ?
Merci beaucoup en tout cas de te donner ce mal à cette heure ...
Nrv :-)

Reply

Marsh Posté le 14-01-2001 à 02:40:03    

Attends, je pense pouvoir trouver un exemple de passage par référence de tableau dans mes TPs. Je cherche ça tout de suite ...

Reply

Marsh Posté le 14-01-2001 à 02:40:03   

Reply

Marsh Posté le 14-01-2001 à 02:40:32    

Merde, je veux dire :
Modif(Joue &tab_jeu[7][6])
Et dans la définition de la fonction, je met des "&" partout ou je parle de "tab_jeu" ou pas ?
Merci !
Nrv

Reply

Marsh Posté le 14-01-2001 à 02:40:59    

Merci pour la recherche.
Vraiment.
Nrv

Reply

Marsh Posté le 14-01-2001 à 02:43:46    

Le proto est:
void modif(Joue tab[][6])
ou
void modif(Joue (*tab)[6])
 
Et l'appel:
modif(tab_jeu);

Reply

Marsh Posté le 14-01-2001 à 02:58:01    

Alors y'a une erreur dans mon code, quelque part...
Décidément ça veut pas marcher. Imagine un puissance 4 qui garde en mémoire qu'un pion :-)
Merde ...
Je programme en C++, ça fait aucune différence ?
Nrv

Reply

Marsh Posté le 14-01-2001 à 02:58:13    

Bah, c'est encore Verdoux qui a raison on dirait :D
 
J'ai pas retrouvé d'exemple mais il me semble qu'un tableau n'est jamais passé par copie mais toujours par référence de toutes façons. Ca servait à rien d'aller chercher une syntaxe compliquée ;)

Reply

Marsh Posté le 14-01-2001 à 03:04:12    

Bon Ok ...
Alors c'est une de mes fonction qui déconne, je m'y remet :-)
Merci beaucoup pour ton aide précieuse ! Et unique, surtout à cette heure !
A+ et merci encore, Nrv :-)
 
PS : à la lecture de mes cours, finalement ce n'est pas si étonnant mais il faut avoir l'idée en tête pour sentir que le cours peut éventuellement vouloir dire ça ... :-) :-)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed