Nommer un pointeur i par Mi, i variable?

Nommer un pointeur i par Mi, i variable? - C - Programmation

Marsh Posté le 20-04-2005 à 13:57:30    

Je souhaite effectuer en C un calcul de matrice en donnant à la matrice de l'élément i le nom de Mi, i variant de 1 à n. Je n'y parviens pas. Deux problèmes se posent:
 
1°)Lorsque je déclare ma matrice Mi, elle est défini à l'intérieur d'une externe double, mais ma matrice doit etre de type static double pour être accessible par mes autres fonctions. Comment définir Mi ne connaissant pas i a priori?
 
2°)Impossible d'attribuer Mi. J'ai essayé la concatenation de chaine de caractere, mais j'ai toujours un problème de type (char au lieu de double, et double au lieu de double[][] si je fais une conversion str to double).
 
Si vous avez une solution...
 

Reply

Marsh Posté le 20-04-2005 à 13:57:30   

Reply

Marsh Posté le 20-04-2005 à 16:16:05    

Perso j'ai rien compris, j'ai déja fait des multiplication addition de matrice mais là je comprends pas.
Met le code que tu as fait pour se faire une idée d'ou tu es partis :)

Reply

Marsh Posté le 20-04-2005 à 19:28:58    

byron a écrit :

Je souhaite effectuer en C un calcul de matrice en donnant à la matrice de l'élément i le nom de Mi, i variant de 1 à n. Je n'y parviens pas. Deux problèmes se posent...


Peut-être peux-tu déclarer un tableau "M" de matrices. Ensuite tu accède à "M[i]" comme t'en as envie...
 

byron a écrit :

1°)Lorsque je déclare ma matrice Mi, elle est défini à l'intérieur d'une externe double, mais ma matrice doit etre de type static double pour être accessible par mes autres fonctions. Comment définir Mi ne connaissant pas i a priori?


Hum... je ne suis pas certain que tu aies une bonne connaissance de "extern" et "static"
Déjà, une variable déclarée en dehors de tout bloc est connue de toutes les fonctions écrites après la variable => variable globale
Une variable déclarée dans un bloc n'est connue que de ce bloc
Ensuite:
- extern en dehors de tout bloc (global) signifie que ta variable a été définie dans un autre source lié au même projet. Tu es obligé de déclarer ta variable pour que ton compilo ne râle pas devant une variable non connue mais tu peux pas la définir car elle a déjà été définie ailleurs et ça ralera à l'édition des liens => d'où la déclaration "extern <type> variable"
- extern dans un bloc signifie que tu redéclares dans le bloc une variable globale (déjà définie plus haut). C'est assez rare mais ça permet de montrer en début de bloc que tu vas utiliser la globale
- static en dehors de tout bloc permet d'isoler ta variable (ou ta fonction) et la rendre visible seulement dans le fichier source où se trouve la variable (ou la fonction) => permet d'avoir des variables (ou des fonctions) de même nom dans des sources distincts sans qu'il y ait intéraction
- static dans un bloc (donc dans une fonction) protège la mémoire associée à ta variable => quand tu reviens dans la fonction plus tard la valeur de ta variable a été conservée et peut être réutilisée => compteur d'appel par exemple
 

byron a écrit :

2°)Impossible d'attribuer Mi. J'ai essayé la concatenation de chaine de caractere, mais j'ai toujours un problème de type (char au lieu de double, et double au lieu de double[][] si je fais une conversion str to double)

:bounce:  
 
Oui, j'en parlerai autour de moi pour faire rire...  :D


Message édité par Sve@r le 20-04-2005 à 19:30:15

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 20-04-2005 à 21:21:29    

Lol, ca va peut-être faire rire, mais c'est faisable sous d'autres langages pour des réels. Je ne suis pas parvenu a faire celà avec des matrices sous C, alors j'ai déclaré une matrice type double M[][][] pour avoir accès à trois indices.

Reply

Marsh Posté le 20-04-2005 à 21:22:11    

Par contre, il faut avouer que ma question n'était pas claire du tout, mais la fatigue et les nerfs aidant, j'ai écris comme cela me venait :lol:

Reply

Sujets relatifs:

Leave a Replay

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