
pilas estaticas
Publicado por julian (1 intervención) el 23/11/2016 19:35:51
Hola que tal, estaría necesitando ayuda con este código. Es un programa que debería cargar la pila y mostrar los datos cargados. tengo un problema con la impresión de los datos ya que no se muestran nunca. Si alguien me puede dar una mano estaría muy agradecido.
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
program ejpila;
const
maxipila=10;
type
tpila=record
cima:integer;
dato:array[1..maxipila] of integer;
end;
var
pila:tpila;
function pilallena(var p:tpila):boolean;
begin
pilallena:=p.cima>=maxipila;
end;
function pilavacia(var p:tpila):boolean;
begin
pilavacia:=p.cima<=0;
end;
procedure inicializar(var p:tpila);
begin
p.cima:=0;
end;
procedure meter(var p:tpila; vexito:boolean; vdato:integer);
begin
if pilallena(p)=true then
vexito:=false
else
begin
p.cima:=p.cima+1;
p.dato[p.cima]:=vdato;
vexito:=true;
end;
end;
procedure sacar(var p:tpila; vexito:boolean; vdato:integer);
begin
if pilavacia(p)=true then
vexito:=false
else
begin
vdato:=p.dato[p.cima];
p.cima:=p.cima-1;
vexito:=true;
end;
end;
procedure cargarpila(var p:tpila);
var
votro:char;
vexito:boolean; vdato:integer;
begin
votro:='s';
while votro<>'n' do
begin
writeln('inserte un elemento, cunado decee terminar precione n');
readln(vdato);
meter(p,vexito,vdato);
if vexito=true then
writeln('ok')
else
writeln('pila llena');
readln(votro);
end;
end;
procedure leer(var p:tpila);
var
vexito:boolean; vdato:integer;
dato:integer;
begin
while not pilavacia(p) do
begin
sacar(p,vexito,vdato);
dato:=vdato;
writeln(dato);
end;
end;
begin
inicializar(pila);
cargarpila(pila);
leer(pila);
readln;
end.
Valora esta pregunta


0