Matrice de struct en paramètre - C - Programmation
Marsh Posté le 04-05-2011 à 14:31:34
Dans 'initDamier', la variable 'damier' est de type Tdamier **. C'est peut-être là le hic ?
Marsh Posté le 04-05-2011 à 14:48:21
Mais encore ?
Damier est bien une matrice, jusque là d'accord, et dans le main aussi.
C'est probablement de là que vient l'erreur, mais je ne vois toujours pas comment le corriger...
Marsh Posté le 04-05-2011 à 14:57:12
je veux dire que ta fonction initDamier retourne un type damier, pas un damier **. L'incompatibilité de type vient sûrement de là.
Marsh Posté le 04-05-2011 à 14:58:17
Et c'est quoi le type de retour de initDamier?
EDIT: Grilled
A+,
Marsh Posté le 04-05-2011 à 15:31:34
Quel que soit le type de la variable "damier", retourner une variable locale depuis une fonction = corruption de pile. Dans initDamier, il faut soit passer par malloc, ou déclarer la matrice dans la fonction main() et la transmettre à initDamier.
Edit: ou déclarer la matrice "static".
Marsh Posté le 04-05-2011 à 17:08:18
Re-bonjour !
Déjà merci pour ces réponses.
Bon, j'ai donc tenté une autre approche :
Code :
|
Oh ! Nouveau message d'erreur !
"error: invalid use of array with unspecified bounds"
(sur les trois lignes de traitement).
Des idées de correction ?
Marsh Posté le 04-05-2011 à 17:19:58
Code :
|
T'expliquer pourquoi reviendrais à te faire un cours quasi complet sur le fonctionnement des tableaux en C, chose que tu aurais du voir en cours...
Marsh Posté le 04-05-2011 à 17:38:55
Bon, soit. Ta méthode a au moins le mérite de fonctionner.
Nous avons effectivement vu les tableaux en cours, mais jamais les tableaux à plusieurs dimensions, qui sont tout de même sensiblement différents apparemment.
Mais bon, comme ça marche, je me contenterai de ça (si l'explication est trop longue).
Merci, donc...
Marsh Posté le 04-05-2011 à 19:43:49
bonjour la logique, par contre ... Tu vas avoir K_NBCASES * K_NBCASES cases au total, qui seront à des coordonnées dupliquées àl'intérieur de chaque case ... C'est pas forcément utile.
Ce serait sans doute simplifié si tu faisais un tableau style
Code :
|
ou encore, pour éviter de te poser des questions sur les tableaux à deux dimensions, une structure correspondant à une ligne :
Code :
|
Marsh Posté le 04-05-2011 à 19:52:43
Bonsoir !
@theshockwave :
Le tableau dont je me sers (à deux entrées) fait 25x25, d'où le seul K_NBCASES (pour reprendre ton exemple, NB_LIGNES==NB_COLONNES).
Par contre, j'aime assez ton autre solution, je vais regarder ça ce soir, voir si ça me parait plus logique...
Merci à vous !
Marsh Posté le 04-05-2011 à 13:51:50
Bonjour à tous !
Après avoir essayé plusieurs formulations (de plus en plus "foireuses", je dois le reconnaitre), je me décide à venir demander de l'aide ici même.
Je suis en 1e année d'IUT informatique, et nous avons un projet à faire en C. Jusque là, rien de bien surprenant.
Ce qui me bloque vient d'un sous-programme à priori tout bête, mais je n'arrive pas à voir d'où vient mon erreur.
Voici donc le code qui me pose problème :
Le but de la fonction est donc d'initialiser un damier, représenté par une matrice, puis de le retourner et de le récupérer dans une variable adaptée dans le main.
Lors de la compilation, j'ai le message d'erreur suivant (sous Code::Blocks) : "error : incompatible types in return".
Pourtant, on traite bien une structure Tdamier, et on la retourne. J'ai donc beau me creuser la tête, je ne vois pas d'où vient l'erreur. N'ayant jamais manipulé de matrices avant, cela vient probablement de là...
Help !
Et merci de m'avoir lu.