Descubra o número. Escreva um programa em C que contenha o jogo ‘descubra o número’, da seguinte forma: seu programa escolhe o número a ser descoberto, selecionando um inteiro aleatório na faixa de 1 a 1000. O programa então exibe:

Eu tenho um número entre 1 e 1000.

Você consegue descobrir qual é?

Digite sua primeira tentativa.

O jogador, então, digita uma primeira tentativa. O programa responde com uma das seguintes sentenças:

Excelente! Você descobriu o número! Gostaria de jogar novamente (s ou n)?

Muito baixo. Tente novamente.

Muito alto. Tente novamente.

Se a escolha do jogador estiver incorreta, seu programa deverá realizar um loop até que o jogador finalmente acerte o número. Seu programa deverá continuar informando ao jogador Muito alto ou Muito baixo para ajudá-lo a ‘mirar’ na resposta correta. [Nota: a técnica de pesquisa empregada nesse problema é chamada de pesquisa binária. Falaremos mais sobre isso no próximo problema.]

Passo 1

Fala Galera!!! Vamos juntos criar esse jogo ‘descubra o número’. A lógica para o nosso programa é criar uma função que consiga gerar um número aleatoriamente e armazenar ele em uma variável, e então, pedir para que o usuário digite um número e fazer a comparação com o número gerado, verificando se é o mesmo que o usuário digitou. Caso ele tenha acertado mostrar na tela e perguntar se ele quer jogar novamente. E enquanto o usuário não acerte o programa deve continuar pedindo para que o usuário digite a próxima tentativa até acertar.

Passo 2

Dentro da nossa função vamos precisar de 3 variáveis, para guardar o número gerado, para guardar a tentativa do usuário e para guardar os valores para continuar ou sair do game.

Para que o programa continue rodando até que o usuário decida sair, podemos usar a estrutura de repetição ‘do while { } ’. Para gerar números aleatório de 1 até 1000 usaremos o comando ‘ 1 + rand () % 1000; ’ . Dentro do ‘ do while {} ’ precisamos de outra estrutura de repetição para enquanto o valor do número gerado seja diferente do número digitado pelo usuário, continue repetindo o processo.

Passo 3

Quando o usuário acertar, o programa irá mostrar na tela e perguntar para o usuário se ele vai querer continuar jogando, utilizando 1 para continuar e 2 para sair. Logo, nossa função ficará da seguinte forma:

void descubraGame(void){

int x; /*variavel para o gerador de numeros */

int descubra; /* variavel para armazenar a tentativa do usuario */

int continuar; /* variavel para continuar ou não */

/* estrutura de repetição, utilizando 2 para sair do game */

do{

/*gerando numero de 1 até 1000 */

x = 1 + rand() % 1000;

/* pedir para o usuário jogar */

printf("\n Eu tenho um numero entre 1 e 1000. \n");

printf(" Voce consegue descobrir qual e?\n ");

printf(" Digite sua primeira tentativa. \n");

scanf(" %d", &descubra);

/* loop enquanto não acertar */

while (descubra != x){

/* if muito baixo */

if (descubra

printf("Muito baixo. Tente novamente.\n? ");

} /* fim do if */

else {

printf("Muitlo alto. Tente novamente.\n? ");

} /* fim do else */

scanf("%d", &descubra);

} /* fim do while */

/* tela para para outro jogo */

printf("\nExcelente! Voce descobriu o numero!\n");

printf(" Gostaria de jogar novamente (s ou n)?\n");

printf("Por favor escreva (1 = sim , 2 = nao)? ");

scanf("%d", &continuar);

} while( continuar ==1); /* fim do... while */

} /* fim da função descubraGame */

Passo 4

Desta forma nossa função estará concluída e só precisaremos chamar ela dentro do main(). Iremos precisar utilizar a biblioteca para usar como parâmetro dentro da função srand(time(NULL)); e gerar os números aleatórios.

Resposta

O nosso programa final será:

A saída do programa: