Alguém por favor me ajude, tenho que entregar essa lista dia 29/01/2011 ainda to no primeiro. A ideia e Trabalhar com Pilha funções e string. aproveitando o codigo abaixo.Preciso ir bem pra na lista pra conseguir encerrar terminar meu curso. Gente e só a função e a exibição... aproveitando o Pilha.h la em em baixo 1. Implemente uma função que receba como parâmetro um texto em uma string e use uma PILHAS para inverter a ordem das letras de cada palavra dessa string preservando a ordem das palavras. Ao final sua função deverá retornar a nova string gerada. Por exemplo, dado o texto ESTE EXERCICIO E MUITO FACIL a saída deve ser ETSE OICICREXE E OTIUM LICAF. s t r i n g Inver tePalav ras ( s t r i n g f rase ) ; */ //main.cpp #include <iostream> using namespace std; #include <cstdlib>//exit #include "Pilha.h" string Inverte_palavras(string frase) { Pilha<char> tmp;//temporária tipo template string saida = frase; int i,j; for(int i=0; i<frase.length(); i++)//i menor tamanho de frase entrada { while(frase != ' ' && i < frase.length())//frase diferente de espaço na frase e frase menor que tamanho de frase { tmp.Empilha(frase[i++]);//temporária que esta com frase é empilhado, frase passa para proxima } while(!tmp.Vazia())//enquanto temporária diferente de vazia { saida[j++] = tmp.Desempilha();//desempilha temporária na saida } while( i < frase.length())//frase menor que frase { saida[j++] = ' ';//exibe espaço vazio } return frase; } } int main() { Pilha<char> p; Pilha<char> saida; Pilha<char> saida_inv; string x; cout<<"\nEmpilhando...\n"; cout<<"Entre com uma frase: "; cin>>x; string x_inv = Inverte_palavras(x); cout<<"Pilha de entrada\n"; cout<<"Resultado frase Invertida\n" << x_inv; system("pause"); return 0; } //----------------------------------------------------------------- #ifndef PILHA_H_ #define PILHA_H_ const int CAPACIDADE = 1000; template<class TIPO> class Pilha { private: TIPO dados[CAPACIDADE];//definindo dados e passando capacidade int topo; public: Pilha() { topo = -1; } // construtor bool Vazia() { if ( topo == -1 ) return true; else return false; } void Empilha(TIPO elem) { if ( topo + 1 < CAPACIDADE ) //verificar overflow { topo++; dados[topo] = elem; } else { cout<<"\aERRO!!! PILHA CHEIA!!!\n"; exit(0); // fecha o programa } } TIPO Desempilha() { if ( !Vazia() ) { TIPO result = dados[topo]; topo--; return result; } else { cout<<"\aERRO!!! PILHA VAZIA!!!\n"; exit(0); // fecha o programa } } void Print() { for(int i=topo; i>=0; i--) { cout<<"| "<<dados<<" |\n"; cout<<"-----\n"; } } }; #endif /*2. Implemente uma função que receba duas PILHAS (P1 e P2) com elementos ordenados do menor para o maior (da base para o topo da pilha) e intercale os elementos dessas pilhas gerando uma pilha resultante (P3) ordenada crescentemente da base para o topo. Implemente sua função usando o seguinte protótipo: void I n t e r c a l a ( Pi lha& P1 , Pi lha& P2 , Pi lha& P3 ) ; 3. Considerando o TAD PILHA, escreva uma função que permita acessar um elemento qualquer pertencente à estrutura, como se essa estrutura fosse um vetor invertido, ou seja, através de índices, mas de trás para frente. Por exemplo, considere que haja em sua pilha P os valores P=3,2,5,7,1,8 e o topo 1 é o elemento de valor 8, se a pessoa quiser acessar o 3o elemento, deverá ser acessado o valor 7. Neste caso, você não precisará remover o valor da pilha, somente acessá-lo mas, no final da execução da sua função, a PILHA deverá estar da mesma forma que estava no início de sua execução. Implemente sua função usando o seguinte protótipo: int GetElement ( Pi lha& P, int pos ) ; 4. Suponha que nosso alfabeto é formado pelas letras a; b e c. Considere o seguinte conjunto de cadeias de caracteres sobre nosso alfabeto: c; aca; bcb; abcba; bacab; aacaa; bbcbb; ::: Qualquer cadeia deste conjunto tem a forma WcM, onde W é uma sequência de letras que só contém a e b e M é o inverso de W, ou seja, M é W lido de trás para frente. Escreva uma função que receba uma cadeia X como parâmetro e retorne verdadeiro ou falso caso essa cadeia pertença ou não ao nosso conjunto, ou seja, determina se X é da forma WcM. Faça uso do TAD Pilha para resolver o problema. Implemente sua função usando o seguinte protótipo: bool PertenceWcM( s t r i n g X) ; 2 */