Bonjour,
Je suis débutant en ADA , et j'ai un souci concernant les pointeurs.
Voici le fichier.ads
et là le fichier.adb
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 Type Pointeur is access Objet'Class ; Type Cellule ; Type Ptr_Cellule is access Cellule ; Type Cellule is record Element : Pointeur ; Suivant : Ptr_Cellule ; end record ; Function Moment_Total (La_Liste : in Ptr_Cellule ) return Float ;
Voici le code que je cherche à exécuter pour calculer le moment total d'un ensemble d'objet de classe composé de cercle , triangle , et polygone.Le moment par composant individuel j'arrive à le calculer et ça marche dans un autre fichier qui ne nous interésse pas ici.
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 Function Moment_total (La_Liste : in Ptr_Cellule ) return Float is Local: Ptr_Cellule ; Resultat : Float := 0.0 ; begin Loop if Local = Null then return Resultat ; end if ; Resultat := Resultat + Moment(Local.Element.all ) ; Local := Local.Suivant ; end Loop ; end Moment_total ;
La compilation donne :
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
29
30
31
32
33
34
35
36
37
38
39
40 With ES_Simples , Geometrie ; Procedure Objet_Pointant is use ES_Simples , Geometrie ; -- Pointeurs C_p ,T_p , P_p : Pointeur ; -- Pour former la Liste Chainees. L1 : Ptr_Cellule := new Cellule' (C_p , Null ) ; L2 : Ptr_Cellule := New Cellule'(T_p , L1 ) ; L3 : Ptr_Cellule := New Cellule' (P_p , L2 ) ; La_Liste : Ptr_Cellule ; M_Total : Float ; Begin Afficher ("--------Pointeurs-------------------") ; Saut_Ligne ; La_Liste := L1 ; Afficher("Moment_total = ") ; M_Total := Moment_total(La_Liste) ; Afficher( M_Total ) ; Saut_Ligne ; end Objet_Pointant ;
[CODE]
$ gcc -c Objet_Pointant.adb
Objet_Pointant.adb:3:11: warning: file name does not match unit name, should be "objet_pointant.adb"
Objet_Pointant.adb:10:20: warning: "C_p" is never assigned a value
Objet_Pointant.adb:10:25: warning: "T_p" is never assigned a value
Objet_Pointant.adb:10:32: warning: "P_p" is never assigned a value
gnatbind -x Objet_Pointant.ali
gnatlink Objet_Pointant.ali
Le souci c'est comment affecter des valeurs aux pointeurs C_p , T_p , P_p pour qui font références à cercle , Triangle , et Polygone qui appartiennent à Objet'Class pour calculer le moment total.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Et l'exécution du code.<code>Moment_total = 0.00000E+00
Ne vous interressez pas à ES_Simples qui marche et permet la lectures et l'affichage de données.
Merci d'avance pour vos réponses.
c urgent.
Partager