Galera sera que alguem sabe fazer um programa que utiliza uma pilha para determinar se um texto é um palíndromo, ou seja, o texto é soletrado identicamente do início para o fim e do fim para o início.
Preciso disto para hoje 8O
Cara, tu poderia fazer da seguinte maneira: pega o texto e copia ele, de traz pra frente, caracter por caracter, em uma nova string… daí usa o método
equals(), pra ver se são iguais … se forem iguais, o texto é palindromo…
barbada
Cara, respondi essa sua pergunta em outro Forum, mas caso vc olhe aki primero…
isso tá com cara de trabalho para Faculdade, então ai vai um exercício q eu fiz ano passado. Tá escrito em Pascal, mas se a matéria não for Java vai servir, se for, bem, a lógica é a mesma.
O meu exercício era mais complexo que isso então eu dei uma adaptada e não testei, portanto pode ser que de algum pau de sintax, ms a lógica é essa.
Qualquer problema Grita!
Código:
uses crt;
{inicio da extrutura de pilha}
type tpilha = record
vet: array[1…200] of char;
topo: integer;
end;
var p1 : tpilha;
s1 : string;
s2 : string;
procedure inicio; forward;
procedure init(var p:tpilha);
begin
p.topo:=0;
end;
function isempty(p:tpilha):boolean;
begin
isempty:=(p.topo=0);
end;
function isfull(p:tpilha):boolean;
begin
isfull:=(p.topo=200);
end;
procedure push(var p:tpilha;elem:char);
begin
if isfull§ then
begin
writeln(´OVERFLOW!´);
readln;
halt;
end
else
begin
p.topo:=p.topo+1;
p.vet[p.topo]:=elem;
end;
end;
function pop(var p:tpilha): char;
begin
if isempty§ then
begin
writeln(´UNDERFLOW!´);
readln;
halt;
end
else
begin
popc:=p.vet[p.topo];
p.topo:=p.topo-1;
end;
end;
function top(p:tpilha): char;
begin
top:=p.vet[p.topo];
end;
{fim da estrutura de pilha}
procedure verifica();
begin
for i:=1 to length(s1) do
begin
push(p1,s1[i]);
end;
while (not isempty(p1)) do
begin
s2:= s2+pop(p1);
end;
if (s2=s1) then
begin
writeln(´palíndromo´);
end
else
begin
writeln(´não palíndromo´);
end;
inicio;
end;
procedure inicio;
begin
s1:=´´;
s2:=´´;
init(p1);
write(´ Entre com uma expresao: ´);
readln(s1);
if e<>´´ then verifica(p1,s1);
end;
begin
clrscr;
inicio;
end.
valeu galera ajudaram muito!!!
Surubion