Ir ao conteúdo
  • Cadastre-se

Números aleatórios [sem repetir] em C?


dantepw

Posts recomendados

Olá! Eu estou fazendo um programa em C que conta as linhas de um arquivo .txt; Após fazer tal ação, ele exibe todas as essas linhas de forma aleatória.

 

Tudo está funcionando perfeitamente, o problema é que ele exibe linhas repetidas e eu não quero que isso aconteça. Eu fiz um tipo de laço para ele buscar outra linha sempre que encontrar uma repetida. Por exemplo, quando ele exibe a linha 1, 2 e 4 [com um total de 4 linhas nesse caso], e o número aleatório der a linha "2" de novo, ele entra nessa laço; o problema é que ele nunca encontra o "3", que falta, assim ficando num loop eterno. Alguém pode me ajudar?

 

Parte do código responsável por isso [se preciso eu mando o código inteiro!]

	repetido:	srand((unsigned)time(NULL)); //gera tempo aleatório	r = rand()%i; //cria linha aleatória embasado no número total de linhas do arquivo (i).	for (f = 0; f < i; f++){ 	palavras_repetidas[f];	if(palavras_repetidas[f] == r){	gotoxy(15, 28);	printf("aguarde!");	goto repetido;	}	}
Link para o comentário
Compartilhar em outros sites

Opa, consegui resolver com a ajuda de um amigo! O objetivo era mostrar vários números aleatoriamente, mas sem repetir. Por exemplo, tenho 3 valores, 5, 10 e 15, ele teria que exibir os valores sem repetir!

Obrigado!!

int treco[11] = {5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55};int i;int r;	srand((unsigned)time(NULL));	for(i = 0; i < 11; i++){	x:	treco[r = rand()%11];	if(treco[r] == 0){	goto x;	}	printf("Valor de treco[i] = %d", treco[r]);	printf("\t\tValor do R = %d\n\n", r);	treco[r] = 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...