Ir ao conteúdo

Posts recomendados

Postado

Prezados membros, estou com dificuldade com um programa para printar todos os anagramas possíveis de uma palavra.

 

O enunciado é assim :

 

Escreva uma função que imprima todos os anagramas de uma palavra que contenha letras não repetidas. Um anagrama são todas as possíveis permutações das letras da palavra original que

forma ou não palavras reais. Por exemplo, a palavra cat, geraria os anagramas: cat, cta, atc, act,tca, tac.

Não esqueça do programa principal que chama essa função.

 

Eu comecei o código usando vetor com elementos string mas depois excluí porque não consegui dar continuidade à essa lógica. Pensei em fazer usando ponteiros também mas não sei como deixar as palavras na ordem certa que deveria ser.

Alguém tem uma sugestão de algoritmo que eu possa usar para

1) ler as letras dessa palavra

2) printar n vezes ( o numero n corresponde a quantidade de letras ) cada letra e após isso,

3) usar uma lógica para fazer as combinações possíveis das outra (n-1) letras da palavra e printar essas letras após a primeira.

Postado

Boa tarde @Luis Felipe Favaretto

Na matemática o problema chamasse permutações simples.

Step1: O  programa  vai  primeiro  verificar  o  número  de  letras  e  calcular  o    fatorial.

Step2: A  letra  inicial  da  palavra vai troca de lugar com sua vizinha no sentido   horário

  • E.i: Palavra(G>A>T>O) >> Palavra(A>G>T>O) >> Palavra( A>T>G>O ) >> Palavra
  • Até que G torne-se  a  ultima  letra  do  array;  Quando  isso acontece o processo
  • se repete com a primeira letra, agora será Palavra(A>T>O>G)...  assim  até que a
  • palavra GATO retome sua forma.

 

  • Curtir 1
Postado

@Luis Felipe Favaretto Boa noite Luis,

 

11 minutos atrás, Luis Felipe Favaretto disse:

valeu pela resposta, ajudou demais na solução, aí dá pra eu ir usando"for"pra resolver ? ou tem alguma estrutura diferente (tipo uma função que faz permutação) , enquanto isso vou tentar usando for ....

Não tenho conhecimento de Função para este fim. Com relação a solução que conseguiu

usando loop FOR, ou usando loop WHILE não tem  muito  haver  com  otimização  apenas

uma questão de gosto mesmo, ambos laços são usuais  e  certamente  você fez  um  bom

código.

 

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!