Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

xisde

Pascal - Vetor e Pilha

Recommended Posts

Bom pessoal estou com a seguinte duvida.

 

Preciso pegar uma posição no vetor com o caracter * dentro da pilha.

 

a pessoa digita isso:

 

paoekapoekpoakepaokeop*poaekpoa

ou aopekpa*poarkapokepoakepoake

 

Onde preciso que ele pegue essa posição que tem esse caracter.

 

Eu ja implementei um sistema que armazena cada caracter em uma posição do vetor.

 

gratz.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está trabalhando com vetor ou pilha? Uma coisa é diferente da outra do ponto de vista de programa.... num vetor é só você fazer um for de 1 até tamanho-1 procurando pelo elemento e quando achar sair do laço e pegar a posição, já na pilha você vai ter que desempilhar os dados até o encontrar, decrementando o topo da pilha até chegar ao elemento buscado.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu preciso na verdade jogar os caracteres na pilha.

 

tipo a pilha e do tipo primeira a entrar ultimo a sair.

 

eu preciso jogar esses caracteres especiais {[( nessa ordem da frase.

 

digamos aokepoakepo{poaekope[kdpokd(akdopasd)ajeoiaej]iaejaoiej}

 

ou seja o { eh o primeiro a entrar e o ultimo a sair do outro lado.

 

eu ja fiz o algoritmo para separar a frase pelos caracteres e agora falta identificar esses caracteres e jogar na pilha.

Compartilhar este post


Link para o post
Compartilhar em outros sites


unit pilhas;

interface

const max = 50;

type elem = string;

pilha = record

topo:integer;

memo: array[1..max] of elem;

end;

 

procedure init(var p:pilha);

function isempty(var p:pilha):boolean;

function isfull(var p:pilha):boolean;

procedure push(var p:pilha; x:elem);

function pop(var p:pilha):elem;

function top(var p:pilha):elem;

 

implementation

procedure init(var p:pilha);

begin

p.topo:=0;

end;

 

function isempty(var p:pilha):boolean;

begin

if p.topo=0 then

isempty:=true

else

isempty:=false;

end;

 

function isfull(var p:pilha):boolean;

begin

if p.topo = max then

isfull:=true

else

isfull:=false;

end;

 

procedure push(var p:pilha;x:elem);

begin

if not isfull(p) then

begin

p.topo:=p.topo+1;

p.memo[p.topo]:=x;

end

else

writeln('ERRO');

end;

 

function pop(var p:pilha):elem;

begin

if not isempty(p) then

begin

pop:=p.memo[p.topo];

p.topo:=p.topo-1;

end

else

writeln('ERRO');

end;

 

function top (var p:pilha):elem;

begin

if not isempty(p) then

top:=p.memo[p.topo]

else

writeln ('ERRO');

end;

end.

 

program frases;

uses pilhas;

var e,s:string;

i:integer;

p:pilha;

begin

writeln('Frase: ');

readln(e);

init(p);

for i:=1 to length(e) do

push(p,s);

s:='';

while not isempty(p) do

s:=s+pop(p);

if s='{' then

if s='[' then

if s='(' then

writeln ('A ordem esta correta')

else writeln ('A Frase esta errada.');

readln();

end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que eu percebi você está se confundindo aki:

if s[i]='{' then
        if s[i]='[' then
                if s[i]='(' then
Você consegue perceber oq fez de errado???

Você tem q fazer esses if's separados pq pensa comigo.

o caracter é um '{', beleza ele vai entrar no if, soh q depois pergunta se o mesmo caracter '{' é igual a '[', oq com ctz dará falso.

 

reveja isso!

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.