Jump to content
Fórum Script Brasil
  • 0

Lista de exercício


marcelosg

Question

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

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...