Formule pour trouver un offset [C] - C - Programmation
Marsh Posté le 24-02-2005 à 17:26:53
bah c'est tout bête hein comme formule...
fais un dessin...
Marsh Posté le 24-02-2005 à 17:30:45
J'avoue que je suis une grosse bouse en math mais c'est pas un peu le merdier quand même leur truc là ??
Z'avez pas des sites avec des méthodes plus simple là ?
J'arrive pas à me faire l'image du truc dans la tête et ça bloque.
Marsh Posté le 24-02-2005 à 17:36:16
furious92 a écrit : J'avoue que je suis une grosse bouse en math mais c'est pas un peu le merdier quand même leur truc là ?? |
Bon...k c'est un tableau à deux dimensions, on est d'accord?
Problème : la mémoire n'en a qu'une de dimension. On est toujours d'accord?
=> tout se suit (ie on a les lignes de ton tableau 2D bout à bout), donc pour calculer la position d'un élément par rapport au début, il faut calculer la taille de tout ce qu'il y a avant. Tu suis toujours?
Pour k[i][j], on a quoi avant?
Toutes les lignes qui sont avant celle en cours (donc i-1 lignes), et tous les éléments avant k[i][j] dans la ligne courante (donc j-1 éléments).
Je te passe le calcul du nombre d'éléments dans la ligne...et on doit retomber sur tes formules, si j'ai pas écrit de conneries et qu'elles ne sont pas fausses.
Marsh Posté le 24-02-2005 à 17:36:22
Bon je vais tenter de comprendre, je sais pas pourquoi mais je bloque connement sur ce truc là...
Merci en tout cas.
Marsh Posté le 24-02-2005 à 17:40:55
furious92 a écrit : Bon je vais tenter de comprendre, je sais pas pourquoi me ije bloque connement sur ce truc là... |
ya une erreur...c'est la taille (en nombre d'éléments) d'une ligne du tableau là normalement, si j'ai pas lu trop vite...
Marsh Posté le 24-02-2005 à 18:05:34
D'ailleurs j'avai capté une autre erreur dans ce même bouquin, et là ce qui m'étonne c'est le 4, pourquoi il fait 4 le k[i] là ?? C'est un char donc il devrait faire 1 non ??
D'ailleurs ils ne font qu'expliquer avec des tableaux du genre K[3][4], et d'un coup là ils te balancent des tableaux avec des lettres au lieu de chiffre j'y comprend plus rien.
C'est quoi ces tableaux avec des lettres là ??
Marsh Posté le 24-02-2005 à 18:46:11
furious92 a écrit : D'ailleurs j'avai capté une autre erreur dans ce même bouquin, et là ce qui m'étonne c'est le 4, pourquoi il fait 4 le k[i] là ?? C'est un char donc il devrait faire 1 non ?? |
k[i] est une ligne de ton tableau, sa taille est donc taille d'un élément * longueur de la ligne.
furious92 a écrit : D'ailleurs ils ne font qu'expliquer avec des tableaux du genre K[3][4], et d'un coup là ils te balancent des tableaux avec des lettres au lieu de chiffre j'y comprend plus rien. |
Bah les lettres c'est pour avoir un peu d'abstraction...c'est apsplus mal!
Marsh Posté le 25-02-2005 à 12:23:34
Ha bah c'est plus simple là.
Puis un pote m'a expliqué par le biais du tableau blanc MSN là, en fait c'était le coup des lettres là que j'arrivai pas à cerner, mais sinon c'est pas dur en fait...
C'est comme d'habitude, quand l'explication est simple on comprend, car bon dans le bouquin là j'ai trouvé que c'était un peu vague...
Merci en tout cas.
Marsh Posté le 24-02-2005 à 17:22:39
Salut tout le monde,
voilà, je suis en train de lire un bouquin pour apprendre le C, et là je bloque, car ils donnent une formule pour calculer l'offset de n'importe quel index d'un tableau multidimensionnel, mais c'est incompréhensible à mes yeux, tout comme la formule qu'ils donnaient dans ce même bouqin pour calculer la taille d'un tableau, j'avai trouvé plus simple sur le net, mais là pour ce qui est de l'offset je trouve pas.
Ils donnent par exemple pour un tableau k [i][j] :
Adresse de k[i][j] = adresse du début de k + i * taille de k[i] (en octets) + j * taille du type des éléments du tableau (en octets)
= adresse du début de k + i * nombre d'éléments de la seconde dimension * taille du type des éléments du tableau (en octets) + j $ taille du type des éléments du tableau (en octets)
Avec deux valeurs concrètes de notre tableau k, et à supposer que le type int occupe 2 octets, celà donne :
Adresse de k[i][j] = &k[0][0] + i * 4 * 2 + j * 2 = 1000 + i * 4 * 2 + j * 2
Donc j'en sais rien pour vous, mais moi franchement j'y comprend rien du tout à leur charabia...
Quelqu'un aurait une formule plus simple ??
Message édité par furious92 le 24-02-2005 à 17:32:18