Bonjour à tous,
tout d'abord merci pour le temps que vous voulez bien me consacrer afin de lire mon message et je l'espère d'y répondre.
J'ai écrit un programme qui permet d'évaluer une expression arithmétique post-fixée a l'aide d'une pile d'entiers ; l'erreur 216 apparaît. Je vous poste mon code ci-dessous :
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97 program poste_fixee; type pile=^noeud; noeud=record val:integer; suiv:pile; end; procedure empiler(var e:integer;p:pile); var k:pile; begin new (k); k^.val:=e; k^.suiv:=p; p:=k; dispose(k); end; function depiler(p:pile):integer; var t:integer; begin t:=p^.val; depiler:=t; p:=p^.suiv; end; function conversion(var c:char):integer; var t:char; begin t:=c; if (t='0') then conversion:=0 else if(t='1') then conversion:=1 else if(t='2') then conversion:=2 else if(t='3') then conversion:=3 else if(t='4') then conversion:=4 else if(t='5') then conversion:=5 else if(t='6') then conversion:=6 else if(t='7') then conversion:=7 else if(t='8') then conversion:=8 else conversion:=9 end; procedure somme(p:pile); var x,y,s:integer; begin x:=depiler(p); y:=depiler(p); s:=x+y; empiler(s,p); end; procedure multiplication(p:pile); var x,y,s:integer; begin x:=depiler(p); y:=depiler(p); s:=y*x; empiler(s,p); end; procedure affiche_sommet(p:pile); begin writeln('le resultat de l operation est:',p^.val); end; function nbr_char(x:string):integer; var i:integer; begin i:=0; while (x[i]>chr(0)) do begin i:=i+1; end; nbr_char:=i-1; end; var c:string[20];n,i,k:integer;p:pile; begin write('entez l operation post_fixe svp:'); readln(c); n:=nbr_char(c); p:=nil; for i:=1 to n do begin if (c[i] in ['0' ..'9'] then begin k:=conversion(c[i]); empiler(k,p); end else if (c[i]='+') then somme(p) else multiplication(p); end; affiche_sommet(p); readln; end.
Partager