Bonjour à tous !
Je suis étudiant en L2 de maths et j'ai un problème assez insoluble (pour moi) en Pascal.
Voila mon problème :
J'utilise ces types :
Jusque là ça va !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 type TListeRec = ^T_listeDefAux; T_listeDefAux = record e : pointer; s : TListeRec end; type TMCreuse=record largeur:integer; hauteur:integer; Val_maj:pointer; cases:TListeRec![]()
Mais ça se complique sur un code comme celui ci :
(en supposant que MC.cases<>NIL évidemment !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 var aux:T_listeDefAux; abscisse:integer; MC:TMcreuse; begin aux:=MC.cases^; abscisse>aux.e^.abscisse end;)
En effet, le problème vient du fait que aux.e est défini comme un pointeur générique et lorsqu'on cherche à utiliser aux.e^.abscisse, le compilateur provoque une erreur même si on a effectivement assigné à aux.e^ un enregistrement avec abscisse.
Comment régler ce problème ?
En gros, pour faire simple. J'ai un pointeur générique auquel j'assigne un enregistrement avec comme "sous valeur" abscisse (et d'autres choses). Comment faire pour utiliser e^.abscisse ? Le compilateur ne "voit" pas que dans le e^, il y a bien un enregistrement avec abscisse.
Je ne suis pas sûr d'être clair... Mais si vous comprennez,, je veux bien de l'aide, parce que là...
![]()
Merci !
PS : c'est pour un projet dans le module "Structures de données" de L2 Maths Fondamentales. L'idée est de créer un tableur en utilisant les matrices creuses. (matrices avec une valeur majoritaire et quelques valeurs modifiées)
Partager