Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
DavidJr

Duvidas com Comando =rand () e Somar

Recommended Posts

Boa Tarde Galera,

Estou fazendo um programa e ele usa o comando =rand().

Ele tem que gerar um numero randomico para eu armazenar em uma variávem.

Mas estou com uma duvida, porque ele sempre gera numeros um perto do outro, como 6054 e dps 6057 e por ai vai.

o comando que estou usando é esse:

srand(time(NULL));

vida = rand()%10000;

printf("Numero Gerado: %d\n",vida);

também ponho o biblioteca #include <time.h> certinho.

Outra Coisa. Para funcionar o que eu quero fazer certinho, estou usando o while junto com o switch e ele tem que chegar em um valor 10 mil, so que como o numero é randomico certamente ele demoraria chegar, com isso gostaria que me dissecem como eu somaria os numeros gerados, se possivel me passem os comandos ou uma apostila para eu poder ler.

Para entenderem melhor o comando é esse:

while (vida = 10000){
printf ("Digite o Numero Para sua Sorte 1 ou 2 \n");
scanf (" %d", &forca);

switch (forca){

case 1:
srand(time(NULL));
vida = rand()%10000;
printf("seu numero é: %d\n",vida);
break;

case 2:
srand(time(NULL));
vida = rand()%5000;
printf("seu numero é: %d\n",vida);
break;
}

}

Agradeço a Ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que voce está sempre "resetando" a semente, e aí o resultado não vai mudar mesmo. voce só deve chamar a função srand uma unica vez em todo o seu código.

E voce quer que o valor aleatório seja apenas crescente, é isso? Se for, é só somar um valor a cada iteração. vida = vida + rand() % 10000;

Não entendi também que voce fala que quer chegar a 10000, mas esse trecho do código só entra se o valor for exatamente 10000, ou seja, nunca vai entrar nesse trecho... E se voce forçar fora desse trecho, assim que ele entrar uma vez já vai sair...

Teste com esse código e repare a diferença:


srand(time(NULL));
while (vida = 10000){
printf ("Digite o Numero Para sua Sorte 1 ou 2 \n");
scanf (" %d", &forca);

switch (forca){

case 1:
vida = rand()%10000;
printf("seu numero é: %d\n",vida);
break;

case 2:
vida = rand()%5000;
printf("seu numero é: %d\n",vida);
break;
}

}

Quanto a somar os valores, voce pode criar uma variável que vai

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, primeiramente saiba que a biblioteca é stdlib.h e não time.h.

Segundo, para somar os números, use uma variavel global ou uma variavel em main e passe seu endereço(ponteiro) como parametro para que possa ser alterado o valor dentro dessa função ou ainda existe um modificador de tipo em C que eu esqueci agora que faz com que uma variavel não perca seu valor entre chamadas de função

Compartilhar este post


Link para o post
Compartilhar em outros sites
Bem, primeiramente saiba que a biblioteca é stdlib.h e não time.h.

Segundo, para somar os números, use uma variavel global ou uma variavel em main e passe seu endereço(ponteiro) como parametro para que possa ser alterado o valor dentro dessa função ou ainda existe um modificador de tipo em C que eu esqueci agora que faz com que uma variavel não perca seu valor entre chamadas de função

A time.h contem sim instruções pra trabalhar com tempo e servir de semente pro numero aleatório.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ghost Killer,

Quando eu falei ke queria chegar ate 10000 eu quis dizer que o limite para o switch parar e dar continuidade no resto do programa seriam os 10000, como se fosse um jogo em que você tem que atacar até chegar em um limite a vida do seu oponente, seria +/- isso o que eu quero. E a Parte que você me passou ajudou, também está no que eu precisava, agora os numeros Randomicos estão ficando longes um dos outros.

Agradeço a Ajuda de todos ate o momento.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Ghost Killer,

Quando eu falei ke queria chegar ate 10000 eu quis dizer que o limite para o switch parar e dar continuidade no resto do programa seriam os 10000, como se fosse um jogo em que você tem que atacar até chegar em um limite a vida do seu oponente, seria +/- isso o que eu quero. E a Parte que você me passou ajudou, também está no que eu precisava, agora os numeros Randomicos estão ficando longes um dos outros.

Agradeço a Ajuda de todos ate o momento.

Sim, eu imaginei que fosse isso, mas leia seu código. A condição do While não está verificando valor nenhum, está setando o valor. Além disso, não é pra enquanto for igual a 10000 e sim enquanto for menor que 10000 (se for maior morre).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, mas então ficaria so o

srand(time(NULL));

while (vida <= 10000){

printf ("Digite o Numero Para sua Sorte 1 ou 2 \n");

scanf (" %d", &forca);

ate ai tudo bem, mas eu gostaria de saber como eu somaria os numeros gerados randomicamente que estão guardados na variavel "vida", pois ja que eu pretendo colocar um limite de 10000 para o numero randomico e 5000 para o outro, seria praticamente "impossivel" chegar aos 10 mil sem somar.

Não sei se esclarece a Duvida mas ate agora agradeço muito mesmo.

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, é só criar uma variavel inteira "soma" e inicializa-la com o valor 0. Logo em seguida, você, a cada interação, troca o valor de soma por soma+numero_randomico_gerado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

aí valeu pela Ajuda ate agora. eu fiz o Seguinte. Deu certo:

case 1:

vida = vida + rand()%7000;

printf("seu numero é: %d\n",vida);

break;

So mais uma coisa agora; Como eu faço para mostrar o Valor que o Numero randomico Gerou já que ele nao é uma Variavel?

Agradeço a Ajuda de Todos!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca ele em uma variável ué. Da mesma forma que voce fez nessa linha:

vida = vida + rand()%7000;

Só que ao invés de colocar na vida, voce coloca em outra variável, mas sem somar ela. Aí na variável vida ao invés de somar o rand(), voce soma com essa variável que voce criou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa mas como assim?

nao entendi, porque tipo, se eu colocar em outra variavel ai ele vai gerar outro numero randomico, e eu queria que mostrasse o mesmo de antes.

Agradeço a Ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

aleatorio = rand()%7000;

vida = vida + aleatorio;

printf("o resultado aleatorio foi: %d\n",aleatorio);

printf("seu numero e: %d\n",vida);

Cara, recomendo seriamente que voce estude mais lógica de programação e depois uns códigos simples antes de continuar com esse jogo que voce tá fazendo. voce está com pouca base.

[]'s e bom estudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado, eu estou começando agora a Faculdade, e estou fazendo ele conforme eu vou adquirindo novos conhecimentos. Só queria encrementar ele com o comando Randon para ficar mais parecido com a realidade. :D

Mas estou indo bem até agora.

Agradeço a Ajuda até o Momento!!!

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
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×