Jump to content
Fórum Script Brasil
  • 0

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


pedrotscom
 Share

Question

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

Edited by pedrotscom
A razão pela qual editei o post foram dois códigos que encontrei na internet.
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...