Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Luis Felipe Favaretto

Anagramas em c++

Recommended Posts

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.

Compartilhar este post


Link para o post
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.

 

Editado por Mauro Britivaldo
Formatação; Clareza
  • Curtir 1

Compartilhar este post


Link para o post
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.

 

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×