Ir para conteúdo
Fórum Script Brasil
  • 0

Como construir um programa que possa escrever qualquer anagrama em C?


pedrotscom

Pergunta

Boa noite pessoal, eu queria saber como faço um programa que consegue exibir em tela um anagrama de qualquer palavra na linguagem em C. Detalhe, eu uso o compilador CODE BLOCKS! para programar em C. Eu encontrei um código em JAVA num outro fórum (o que não me satisfaz). Queria saber também como posso travar uma letra no mesmo lugar quando vou analisar o anagrama. Por exemplo: Quero todos os anagramas da palavra AMOR porém com a letra A travada no seu lugar! (ou a letra M no seu lugar, ou M no começo, ou as letras A e O travadas nos seus lugares ou no começo,  etc...).

AMOR

AMRO

AROM

ARMO

AORM

AOMR

Também quero que ele exiba quantos anagramas a palavra terá. Por exemplo no caso acima: Temos um A travado em seu lugar e também temos a permutação de 3 caracteres o que matematicamente é representado por 3! ou 3 Fatorial = 3 * 2 * 1 = 6 Anagramas. A frase "X" Anagramas é o que o programa deverá escrever! Agradeço desde Já!

 

Eu vou deixar dois códigos que encontrei na internet porém que não estão compilando eles estão compactados no formato de arquivo .RAR e os arquivos com código fonte estão com a extensão .c, verifiquem o arquivo de texto para mais detalhes. Lembrem-se que eu estou usando o CODE BLOCKS!

http://www.4shared.com/rar/o8LsOfxbce/Anagramas_Em_C.html

http://www.mediafire.com/download/nf9vge8gpvhw9gd/Anagramas_Em_C!.rar

Editado por pedrotscom
A razão pela qual editei o post foram dois códigos que encontrei na internet.
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Nunca vi um programa assim, más imagino na minha cabeça
que você teria de colher a palavra armazenando-a num
vetor de string, embaralhar usando a função rand ();
da biblioteca padrão do c, a stdlib.h, e para que as sequências
venha a ser diferentes deve-se usar obrigatoriamente a função
srand ( ); que usa como parâmetro uma função da biblioteca
time.h, dentro de um ciclo while, que pode ser finalizado
no fim de todas as sequências diferentes.

ficaria mais ou menos assim:

char vet [ 50 ];
do{
int r = 0;
int t;// uma variável temporária
srand ( time ( NULL ) );
scanf ( que leia também espaços ); ou fgets ( );para colher a palavra
for( ... ){}//Um laço para percorrer o vetor
r = rand ( ) % strlen ( tamanho da palavra );
t = vet [ ];
vet [ ] = temp;

for ( ... );//Este laço para exibir a palavra embaralhada
    }while ( 1 );//Para repetir em busca de outra sequência diferente da palavra.
Para travar uma letra, basta omití-la do embaralhamento,
mais correto seu programa ter a capacidade de eliminar um caracter
qualquer antes da entrada na função rand();
e posicioná-lo depois no local correto, esta é na minha opinião
a parte mais complicada, más nada impossível de se fazer.
Estas são minhas dicas, não vou testar o programa do link porque estou sem tempo agora.

Abraço, boa sorte e bons estudos.

"Como não sabia que aquilo era impossível de fazer, foi lá e fez"

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...