Escreva um algoritmo, usando uma Pilha, que inverte as letras de cada palavra de um texto terminado por ponto (.) preservando a ordem das palavras. Por exemplo, dado o texto:
ESTE EXERCÍCIO É MUITO FÁCIL.
A saída deve ser:
ETSE OICÍCREXE É OTIUM LICÁF

Passo 1

O problema pede um algoritmo que leia um texto terminado em ponto e inverta as letras de cada palavra mantendo a ordem das palavras. O conteúdo é manipulação de strings com estrutura de dados Pilha, que é LIFO.

Passo 2

Para inverter uma palavra com pilha, usamos a característica LIFO: empilhamos cada letra e depois desempilhamos para obter a palavra invertida.

Passo 3

Vamos ler o texto caractere a caractere. Se for uma letra, empilhamos. Se for espaço ou ponto, desempilhamos toda a pilha para o resultado, adicionamos o separador (espaço ou ponto) e, no caso do ponto, encerramos o processamento.

Passo 4

A saída final é a concatenação das palavras com letras invertidas e os mesmos separadores do texto original.

Resposta

Algoritmo InverterLetrasPorPalavra
// Usa uma pilha para inverter letras de cada palavra
Declarar P como Pilha de caractere
Declarar resultado como String
resultado ← “”
// Lê o texto até encontrar o ponto final
Para cada caractere c em texto faça
Se c ≠ ’ ’ e c ≠ ‘.’ então
P.Empilhar©
Senão
// Desempilha todas as letras acumuladas
Enquanto ¬P.Vazia() faça
resultado ← resultado + P.Desempilhar()
FimEnquanto
// Adiciona o separador
Se c = ’ ’ então
resultado ← resultado + ’ ’
Senão // c = ‘.’
resultado ← resultado + ‘.’
// Fim do texto
Pare
FimSe
FimSe
FimPara
Escrever(resultado)
FimAlgoritmo

Exercícios relacionados