Ir ao conteúdo
  • Cadastre-se

Anagramas em c++


Posts recomendados

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.

Link para o comentário
Compartilhar em outros sites

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

@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.

 

Link para o comentário
Compartilhar em outros sites

7 horas atrás, Luis Felipe Favaretto disse:

(tipo uma função que faz permutação)

existe uma função chamada next_permutation que faz parte da biblioteca <algorithm>. Aqui você pode ver um exemplo: http://ideone.com/GrKw5o. Mas se seu professor mandou fazer a mão é para você pegar pratica.

Link para o comentário
Compartilhar em outros sites

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!