Ir ao conteúdo
  • Cadastre-se

Randomizar as letras de uma palavra em c++


editoso

Posts recomendados

Olá pessoa, tudo bem?

É a primeira a minha primeira vez no forum, e tenho uma dúvida com relação à randomização, de uma string por exemplo.

Faço SI e tenho uma tarefa. Preciso criar um jogo da memoria, no qual serão sorteadas 4 letra dentro do alfabeto. Até ai tudo bem. Resolvi com a seguinte sintaxe (x[j]=rand()% 26 + 'a';). A parte a qual eu preciso de ajuda é que depois de sortear essas letras e armazená-las no vetor, é necessário duplicar o vetor com as 4 letras já sortedas e troca-las de forma randomica.

No final apresentar as 8 letras, só que as do segundo vetor em ordem diferente das do primeiro. Obrigado.

Link para o comentário
Compartilhar em outros sites

Imagino que o exemplo abaixo resolva o seu problema:


#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <windows.h>

#define SIZE 4

int main(void)
{
char vetor[SIZE];
int i = 0;
int escolha = 0;
int rand_letras = SIZE;
int pos_vetor = 0;
char tmp;

/** Carrega o vetor com letras aleatorias **/
printf("Letras: \n");
for( i = 0; i < SIZE; i++ )
{
srand(time(NULL));
vetor[i] = rand() % 26 + 'a';
printf("%c ", vetor[i]);
Sleep(1000);
}
printf("\n\n");

while ( pos_vetor < SIZE - 1 )
{
/** Escolhe uma posicao aleatoria **/
escolha = rand() % rand_letras;

/** Faz a troca pela posicao sequencial **/
tmp = vetor[pos_vetor];
vetor[pos_vetor] = vetor[escolha];
vetor[escolha] = tmp;

/** Proxima posicao que sera trocada **/
pos_vetor++;
}

/** Mostra o vetor embaralhado **/
printf("Letras embaralhadas: \n");
for( i = 0; i< SIZE; i++)
printf("%c ", vetor[i]);
printf("\n");

return 0;
}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...