Ir para conteúdo
Fórum Script Brasil
  • 0

Lista de exercício


marcelosg

Pergunta

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 para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...