Initialisation d'une matrice à 0

cs_SH Messages postés 7 Date d'inscription dimanche 28 décembre 2003 Statut Membre Dernière intervention 24 février 2005 - 26 juin 2004 à 16:17
cs_Zeroc00l Messages postés 367 Date d'inscription lundi 1 avril 2002 Statut Membre Dernière intervention 11 février 2010 - 26 juin 2004 à 19:03
Bonjour
Ma question porte sur l'initialisation d'une matrice.

Supposons par exemple une matrice d'entier à 2 dimensions, et qu'il y a des cases qui contiennent des valeurs différentes de zéro

Je voudrai savoir est ce qu'il existe une commande qui initialise automatiquement toutes les cases à 0 ou est ce qu'on est obligé de faire une double boucle imbriqué pour parcourir et affecter la valeur 0 à chacune des cases.

Merci

1 réponse

cs_Zeroc00l Messages postés 367 Date d'inscription lundi 1 avril 2002 Statut Membre Dernière intervention 11 février 2010
26 juin 2004 à 19:03
Il existe une fonction FillChar que tu peux utiliser de la sorte :

FillChar(TaMatrice, SizeOf(TaMatrice), 0);

MAIS ATTENTION ! UN TRUC A SAVOIR :

En realité cette fonction rempli tout le segment mémoire de byte = 0 ce qui revient au même si ta matrice est un tableau de reel (8 octets par réel)

Cependant si tu voulais initialiser par une autre valeur (par exemple que des 1), étant donné que cette fonction rempli le tableau comme ceci :
000000010000000100000001....

Un réel qui utilise 8 octets va se retrouver avec une valeur bizarre (dû au format de lecture)

Donc Attention...
Personnellement je tire parti de ca en cherchant de bonnes valeurs...
Par exemple, j'ai eu besoin d'initialiser un Tableau
(un ZBuffer) avec un grand nombre négatif.
En essayant quelques nombres et en affichant la valeur d'une case du tableau j'ai trouvé :

--> 200 rempli le tableau par : -4.3180364478e+175
--> 100 rempli le tableau par : 4.034880275e+42

Autrement dit des valeurs qui me suffise amplement...

Maintenant, si c'est plus rapide ... oui je crois... A vrai dire j'ai jamais vraiment fais de tests (pas trouvé le temps en fait...)
Si tu en fait merci de me tenir au courant :)
Et si tu trouve une méthode plus rapide Pareil ... penses à moi :)

Bonne Prog

-={[ Zeroc00l ]}=-
0