Manipulations des Tables

Manipulations des Tables - C++ - Programmation

Marsh Posté le 02-11-2007 à 18:57:00    

Bonjour.
 
Dans le cadre d'un projet scolaire, je dois creer un jeu d'Awalé en cpp
 
J'utilise pour ce faire une table bidimensionnelle de type int Table[2][7]
en cours de jeu, Table[i][j] renvoie à la j-éme case du (i-1)e joueur, Table[i][0] à ce qu'il a déjà collecté.
 
Au cours du jeu, nous utilisons diverses fonctions qui modifient la table (par exemple pour ramasser, pour distribuer, etc...)
 
mes definitions de ces fonctions sont donc de type:
 

Citation :

int** Nomfonction(int Table[2][7], *autres parametres*){
...
return Table;
}


 
à la ligne de "return Table;" le compilateur (devcpp pour ne pas le nommer) me sort:

Citation :

invalid conversion from `int (*)[7]' to `int**'


 
Dans le meme genre (ou presque), lorsque je dois utiliser la fonction, mon

Citation :

Table=Nomfonction (Table, *autres parametres*)

rappelle:

Citation :

incompatible types in assignment of `int**' to `int[2][7]'


ou

Citation :

invalid conversion from `int**' to `int (*)[7]'


(selon son humeur)
 
j'ai essayé de ne mettre que "int" au lieu de "int**" (on sait jamais) mais sans succès...
 
Plus etonnant, lorsque j'essaye de finter le compilateur, en transformant ma table bidim en une table unidim (table[i][j] devenant table[i*7+j]) j'ai les memes erreurs (aux arguments pres...)
 
Question: existe-t'il une syntaxe correcte que j'aurais oubliée, ou bien est-ce que tout simplement, une table etant considérée comme un ensemble d'elements, une fonction ne peut pas en ressortir?
Dans le premier cas, les réponses vont se limiter à un classique "eh gamin, voilà la syntaxe correcte" ce à quoi je repondrais "merci beaucoup", tout misérable de pas m'etre rappellé ça, et dans le second, je serais plus embetté...
J'ai pensé -en cas de secours- à utiliser des pointeurs, mes fonctions se transformant alors en "void"... mais j'ai peur que ce soit assez "lourd", puisqu'au final ça fait 14 pointeurs (2*(6+1)) à gerer..
 
Merci d'avance pour m'aider à resoudre ce problème que je ne devrais pas avoir  :pfff:


---------------
~il Re~
Reply

Marsh Posté le 02-11-2007 à 18:57:00   

Reply

Marsh Posté le 04-11-2007 à 01:15:13    

int** Nomfonction(int Table[2][7], *autres parametres*){  
...  
return Table;  
}
 
-> int Table[2][7] : zone de 2x7 entiers à l'adresse mémoire Table
si tu retourne table (l'adresse du premier entier du tableau), la signature de la fonction doit être int*

Reply

Marsh Posté le 04-11-2007 à 10:50:18    

std::vector c'est pas fait pour les chiens aussi :o

Reply

Sujets relatifs:

Leave a Replay

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