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
Question
marcelosg
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 */
Link to comment
Share on other sites
0 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.