etspaz 0 Denunciar post Postado Março 30, 2007 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
skimo-solar 0 Denunciar post Postado Março 30, 2007 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
etspaz 0 Denunciar post Postado Abril 2, 2007 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á aparecendopazeamor!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