Pascal/Turbo Pascal - pilas estaticas

 
Vista:
sin imagen de perfil

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder