Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

×

Informação importante

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