Ir para conteúdo
MEDIEVAL

PROGRAMA DE SORTEIO EM C ANSI

Recommended Posts

Boa tarde

 

Pessoal estou desenvolvendo um programa de sorteio em C ansi para um trabalho da faculdade. Ele está funcionando, mas com um problema que não consigo identificar, a cada nova compilação ele sorteia um número diferente, mas se eu chamar a função várias vezes e compilar eles sorteia o mesmo número.

compilação 1
===========
Número 1: 18
Número 2: 18
Número 3: 18
Número 4: 18
Número 5: 18
Número 6: 18
Número 7: 18
Número 8: 18
compilação 2
===========
Número 1: 74
Número 2: 74
Número 3: 74
Número 4: 74
Número 5: 74
Número 6: 74
Número 7: 74
Número 8: 74
Alguém tem alguma ideia do que pode estar errado. Segue o código:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int sorteio();

int main(void) {

	printf("Número 1: %d\n", sorteio());
	printf("Número 2: %d\n", sorteio());
	printf("Número 3: %d\n", sorteio());
	printf("Número 4: %d\n", sorteio());
	printf("Número 5: %d\n", sorteio());
	printf("Número 6: %d\n", sorteio());
	printf("Número 7: %d\n", sorteio());
	printf("Número 8: %d\n", sorteio());




	return EXIT_SUCCESS;
}

int sorteio(){
	int i = 0;
	int cont = 0;

	srand( (unsigned)time(NULL) );

	do {
		i = rand()%100;
		cont++;
		if(i == cont){
			return i;
		}

	}while(i != cont);

	return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int sorteio();

int main(void) {

    srand(time(NULL));

	printf("Número 1: %d\n", sorteio());
	printf("Número 2: %d\n", sorteio());
	printf("Número 3: %d\n", sorteio());
	printf("Número 4: %d\n", sorteio());
	printf("Número 5: %d\n", sorteio());
	printf("Número 6: %d\n", sorteio());
	printf("Número 7: %d\n", sorteio());
	printf("Número 8: %d\n", sorteio());




	return EXIT_SUCCESS;
}

int sorteio(){
	int i = 0;
	int cont = 0;

	do {
		i = rand()%100;
		cont += 1;
		if(cont == 100){
                   cont = 0;
		}
		if(i == cont){
		   break;
		}

	}while(i != cont);

	return i;
}

Cara colocquei a semente do random na função principal! e fiz mais umas alteração ai! olha ai se te ajudei!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, valeu a tentativa, mas deu no mesmo saca aí

Número 1: 57
Número 2: 57
Número 3: 57
Número 4: 57
Número 5: 57
Número 6: 57
Número 7: 57
Número 8: 57

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara pois eu compilei de novo no code::Blocks e tá funcionanado! e se você n quer que os valores repitam e que o sorteio esteja limitado até o número 100, tem que usar vetor! :D

joga meu código nesse site aqui: https://www.codechef.com/ide;

coloca pra compilar na linguagem C e olha ai como tá funcionando! só que ainda tem uma probabilidade de repetir devido a lógica!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Era so pesquisar o funcionamento de srand, codigo:

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

int sorteio();

int main(void) {

	srand( time(NULL) );

	printf("Número 1: %d\n", sorteio());
	printf("Número 2: %d\n", sorteio());
	printf("Número 3: %d\n", sorteio());
	printf("Número 4: %d\n", sorteio());
	printf("Número 5: %d\n", sorteio());
	printf("Número 6: %d\n", sorteio());
	printf("Número 7: %d\n", sorteio());
	printf("Número 8: %d\n", sorteio());




	return EXIT_SUCCESS;
}

int sorteio(){
	return rand()%100;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

O seu programa mostra sempre o mesmo número no sorteio por que a função tempo retorna um número em segundos baseado no horário e data do computador e como a função randômica pega esse número de segundos para fazer o cálculo e dar o número sorteado então se não houver uma forma de aguardar um pouco de tempo entre um sorteio e outro o número de segundos repassado para a função randômica será o mesmo então sempre irão ser sorteados os mesmos números. Resumindo: o seu programa sempre exibe os mesmos números por que não há um tempo de espera entre um sorteio e outro para que esses números se modifiquem.

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

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.