bonjour,
un tableau 2D, sous 4D, est un tableau de tableau.
exemple :
mon soucis est que pour une fonction générique, je n'arrive pas à distinguer les pointeurs sur une ligne d'un tableau 2D d'un pointeur sur un tableau 2D
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 tableau entier($MonTableau2D;1;3) alors : taille($MonTableau2D)=1 `normal` taille($MonTableau2D{1})=3 `normal` type($MonTableau2D)=13 `(est un tableau 2D) : normal` type($MonTableau2D{1})=13 `(est un tableau 2D) : pas normal, devrait valoir 15!`
je vous mets la fonction que j'ai faite, elle sert a supprimer tout ce qui est "en aval" d'un variable :
le seul probleme intervient avec le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 `detruire variable(Ptr)` Si (Type($1)=Est un pointeur ) Si (Non(Nil($1))) Si (Non(Indefinie($1->))) Au cas ou : (Type($1->)=Est un pointeur ) Detruire Variable ($1->) : (Type($1->)=Est un tableau pointeur ) Boucle ($indice;0;Taille tableau($1->)) Detruire Variable ($1->{$indice}) Fin de boucle : (Type($1->)=Est un tableau 2D ) Boucle ($indice1;0;Taille tableau($1->)) Boucle ($indice2;0;Taille tableau($1->{$indice1})) $El:=$1->{$indice1}{$indice2} Si (Type($El)=Est un pointeur ) Si (Non(Nil($El))) Detruire Variable ($1->{$indice1}{$indice2}) Fin de si Fin de si Fin de boucle Fin de boucle Fin de cas EFFACER VARIABLE($1->) Fin de si Fin de si Fin de si
il y a 3 problemes à cette fonction :
1 : ne marche pas avec les variables locales (mais ce n'est pas le but de la fonction)
2 :
supprime tab puis veut acceder a tab 2 : erreur (possible à éviter sans trop de complication)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 tableau pointeur(Tab;2) Tab{1}:=->Tab Entier:=3 Tab{2}:=->Entier detruire variable(->Tab)
n'aura de toute maniere pas accés a Entier : ne pourra pas le supprimer
solution : simplement effacer les pointeurs sur lui même (si vous voyez ce que je veux dire), cependant on peut passer par plusieurs tableaux qui reviennent sur le premier... mais bon, à mettre dans la "notice" d'utilisation de la fonction
3 :
ne marche pas car prend Ptr-> comme un tableau 2D : passe par Ptr->{0}{0} qui genere une erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 pointeur(Ptr) tableau pointeur(Tab;2;2) Ptr:=->Tab{1}
quelqu'un pourrait-il me dépanner pour ce dernier probleme (le 3eme)?
_____
edit : je crois pouvoir trouver une solution du coté de résoudre pointeur... je continue de chercher...
Partager