Allocation de matrice 3D pondérée - C - Programmation
Marsh Posté le 03-08-2009 à 21:31:11
Duc_onlajoy a écrit : Bonjour
|
Bon, déjà 2 remarques de base
1) perso je nomme toujours mes types "t_qqchose". Ca me permet de distinguer facilement type et variables et garder le token "qqchose" pour mes noms de variables
Donc tes types pourraient être
Code :
|
2) ensuite, étant donné que le poids est lié au point, tu peux l'inclure dans le type "t_point3D" mais bon, cette remarque est à prendre avec recul vu que je ne connais pas ton besoin. Peut-être que pour toi c'est utile de distinguer un type "t_point3D" d'un type "t_pointPondere" (si par exemple t'utilises par ailleurs des points non pondérés...)
Sinon, pour en revenir à ta question principale, ton allocation est ratée. Tu as fait 2 boucles parallèles alors qu'il aurait fallu faire 3 boucles imbriquées. D'ailleurs t'aurais dû t'en rendre compte en réfléchissant à ce qu'est une matrice
- un tableau 3D contenant X tableaux 2D
- chaque tableau des X tableaux 2D contient Y tableaux 1D
- chaque tableau des Y tableaux 1D contient Z points pondérés
Ce qui donne
Code :
|
J'ai laissé les cast aux malloc pour que tu voies bien de quoi il s'agit mais normalement, il ne faut pas les mettre...
PS: Super ton pseudo !!!
Marsh Posté le 04-08-2009 à 08:43:30
Très mauvaise technique d'allocation de matrice.
Y a plein de sujets sur le forum sur comment faire ça correctement.
Marsh Posté le 04-08-2009 à 09:26:45
@ Sve@r : merci de ces conseils et commentaires. En effet je comprends bien maintenant que l'allocation ne pouvais pas être correcte! Et en effet j'utilise le t_Point3D dans une autre structure d'où sa réutilisation ici.
@ Taz : Merci de me dire que c'est mal mais pourrais tu me dire comment il vaut mieux faire? Si je pose la question c'est que je n'ai pas trouvé de sujet qui parle d'allocation de matrice 3D de structures imbriquées. Mais j'ai surement mal cherché :s
Marsh Posté le 04-08-2009 à 16:51:57
http://forum.hardware.fr/hfr/Progr [...] 9254_1.htm
par exemple.
C'est pour un tableau 2D mais tu devrais pouvoir rajouter une dimension sans trop de problèmes je pense.
Marsh Posté le 05-08-2009 à 13:12:21
ptitchep a écrit : http://forum.hardware.fr/hfr/Progr [...] 9254_1.htm |
Tout a fait
La methode est recursive sur le nb de dimension.
Marsh Posté le 03-08-2009 à 16:42:55
Bonjour
N'étant pas un expert en C , j'aimerai vous demander s'il n'y a pas de fautes dans le code suivant.
Pour faire simple j'ai un ensemble de points dans un espace 3D (x,y,z), et chacun possède un poids.
J'ai donc crée les structures qui me semblaient logiques dans le fichier structure.h:
Maintenant dans mon programme je dois allouer la place pour la matrice, afin de la remplir avec des point3D (enfin si je dis pas de bétises ) Donc dans mon main.c j'ai ce bout de code : Ai-je raison ou bien tort?
Merci beaucoup de m'aider à faire ce code propre!
Message édité par Duc_onlajoy le 03-08-2009 à 17:30:58