Ir para conteúdo

POWERED BY:

Arquivado

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

etspaz

inverter uma palavra usando pilha

Recommended Posts

ola pessoal, to com um probleminha pra resolver.

tenho que fazer o programa ler uma string e inverter , usando a estrutura de pilha.

inverter eu consegui, mas sem usar a pilha , ate declarei apilha, criei a estrutura, mas na hora de usar

nao vai, ja tentei desempilhar primeiro, depois contar os caracteres e inverter, jogar na plha ja invertido, nao vai.

o codigo que inverte, mas sem utilizar a pilha é este:

 

#include <conio.h>

#include <iostream.h>

#include <stdio.h>

#include <string.h>

#include "Pilha.h"

 

void main()

{

clrscr();

struct Pilha p1;

IniPilha (&p1);

int qtd,x;

char palavra[20];

cout<<"digite a palavra:"<<endl;

cin>>palavra;

qtd=strlen(palavra);

cout<<"A palavra invertida e:";

for(int i=qtd-1;i>=0;i--)

{

cout<<palavra;

}

getch();

}

 

 

tem outro problema, tenho que fazer um programa em C++ para verificar se uma expressão é ou não palíndroma, ou seja,se ela pode ser lida da esquerda para a direita ou da direita para a esquerda com o mesmo significado, tambem usando a estrutura de pilha, acredito que fazendo o anterior este fica facil .

 

alguem pode me dar uma dica :unsure:

 

 

alguem pode dar uma dica

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá uma olhada na lógica, como funciona uma PILHA? Aquele esquema FILO (first in last out)Tendo isto em mente faça isso:Leia a stringVai jogando a primeira letra na pilha, depois a segunda e assim até o Depois é só ir puxando que ela já vai sair ao contrário :)Por exemplo, a palavra P I L H A:gets(palavra);for(i=0; palavra(i)!='\'; i++) push(palavra(i));Imprimindo a palavra invertida:for(;i;i--) printf("%c",pop());Lembrando que push joga na pilha e pop retira.*ali onde tá !='\' era um barra zero , não sei pq nao tá aparecendo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá uma olhada na lógica, como funciona uma PILHA? Aquele esquema FILO (first in last out)Tendo isto em mente faça isso:Leia a stringVai jogando a primeira letra na pilha, depois a segunda e assim até o Depois é só ir puxando que ela já vai sair ao contrário :)Por exemplo, a palavra P I L H A:gets(palavra);for(i=0; palavra(i)!='\'; i++) push(palavra(i));Imprimindo a palavra invertida:for(;i;i--) printf("%c",pop());Lembrando que push joga na pilha e pop retira.*ali onde tá !='\' era um barra zero , não sei pq nao tá aparecendo

pazeamor!valeu pelo toque, na verdade eu ja sabia, mas não sabia que sabia, porque ja tinha feito alguns exemplos jogando e tirando da pilha, e de fato ao dar o Pop, o ultimo elemento inserido é oque primeiro que sai, é só exibir o resultado do Pop, tava meio atrapalhado porque ao inves de jogar o conteudo dos elementos do vetor que era digitado, tava jogando o valor de qtd, que era so a quantidade de caracteres digitados, entao ele xingava porque eu jogava um int e mandava exibir um char.com a tua ajuda eu pude pensar um pouco, valeu http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

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.