Ir ao conteúdo

Posts recomendados

Postado

Pessoal estou tentando fzr tipo um jogo de adivinhação, mas estou com dificuldades de criar um algoritmo que resolva o meu problema, tenho q criar tipo um laço números aleatórios que diz se éh o número certo.

Enfim, quem poder dá uma ajuda, agradeço. Vou estar alterando conforme eu for fazendo e arrumando do jeito q eu quero, ai vou postando aqui.

 

/*1 - Escreva um programa para adivinhar um numero entre 1 e 99 que o usuario
    pensou. Digite via teclado os simbolos =, > ou < a cada pergunta. Utilize o
    comando if-else.*/
main()
{
    int i,maior,menor;
    char tecla;
    for(i=50;tecla=='=';i++)
    {
        printf("Seu numero eh %d??", i)
        scanf(" %c", &tecla);
        if(tecla == '>')
        {
            
        }
        else if(tecla == '<')
        {
            
        }
        if(i==99){i=0;}
    }
        printf("O NUMERO QUE você PENSOU FOI %d!", i);
        printf("FIM DO PROGRAMA");
}

 

adicionado 8 minutos depois
7 minutos atrás, Malcolm X disse:

if(i==99){i=0;}

Não faz sentido, já removi isso. Tinha pensado em uma coisa, mas vi que não vai dá certo.

Postado

@Malcolm X

14 minutos atrás, Malcolm X disse:

tenho q criar tipo um laço números aleatórios que diz se éh o número certo

Li isso umas 5 vezes e não entendi o que você quis dizer.

 

O usuário insere um número entre 1 e 99, o programa chuta um número nesse intervalo e o usuário tem que ficar dando dicas até ele acertar?

> e < seriam para encurtar o intervalo, e = significa que o chute foi certo?

Postado

 

10 minutos atrás, Lucca Rodrigues disse:

@Malcolm X Então o usuário insere um número entre 1 e 99, o programa chuta um número nesse intervalo e o usuário tem que ficar dando dicas até ele acertar?

Sim, quero que o usuário tente dentro de 10 tentativas no máximo, até menos se eu pensar em algo legal. O que eu quero é que o usuário diga se o numero é maior ou menor que 50, ai eu armazeno esse numero em uma variável, e já corto metade dos 99. Dps armazeno esse valor em maior= i (50); dps vou jogando números aleatórios até achar o número certo, sempre cortando a metade desse número pra não ter q ficar indo um em um.

 

tipo:

usuário pensou em 74

numero maior, menor ou igual q 50?

usuário digita '>'

maior recebe 50

numero maior, menor ou igual q 69?

usuário digita '>'

numero maior, menor ou igual q 79?

usuário digita '<'

numero maior, menor ou igual q 74?

usuário digita '='

fim do programa.

""'''''''''''''''''''''''''''''''''''

Postado

@Malcolm X

Acho que não tem muita lógica em perguntar número por número em ordem crescente. Use a função rand() para escolher um número dentro do intervalo estabelecido, e que esse intervalo se altere cada vez que o usuário digitar > ou <.

Não esqueça de pedir o número pro usuário, e avaliar se esse número está entre 1 e 99, caso não esteja, peça novamente.

Faça um loop com a condição tecla != '=', porque enquanto o caractere inserido for diferente do caractere =, o programa deve continuar, pois o número ainda não foi adivinhado.

  • Curtir 1
Postado
main()
{
    char c;
    double x=50,y=x/2;
    for( ; ; )
    {
        printf("Seu numero eh maior(>), menor(<) ou igual(=) a: %.0lf\t",x);
        scanf(" %c", &c);
        if (c == '>')
        {
            x=x+y; // 50+25=75
            y=y/2; // 25/02=12.5
            if(x>=99.2) //não deixa ultrapassar 99
            {
                x=x-1;//subtrai -1
            }
            else if(x<=0.2) //não vai abaixo de zero
            {
                x=x+1;//adiciona +1
            }
        }
        else if (c == '<')
        {
            x=x-y; //Recebe 50-25=25
            y=y/2;
            if(x>=99.2)//não vai além 100
            {
                x=x-1;//subtrai -1
            }
            else if(x<=0.2) //não vai até zero
            {
                x=x+1;//adiciona +1
            }
        }
        else if(c == '=')
        {
            printf("\O NUMERO QUE VOCEH PENSOU EH = %.0lf\n",x);
            break;
        }
    }
        printf("*****************FIM DO PROGRAMA.*****************");
}

Consegui deixar do jeito q eu queria, tive que fazer várias alterações no programa e na minha lógica também kkk, mas enfim tá ai.

Se alguém puder dá um feedback, agradeço.

  • Curtir 1
Postado

@Malcolm X Sempre que for postar um código, inclua as bibliotecas, porque se por exemplo eu quisesse testar seu programa, não iria querer perder tempo adivinhando que bibliotecas você usou.

 

Quando compilo me aparece só 1 erro:

image.png.062f6a81696c04b32988d36b0ee13080.png

Deve ter sido desatenção, acho que era pra ser um \n.

 

Se vai fazer um loop infinito, já que você não está incrementando nada nem inicializando variáveis, convém usar while() com a condição true ou 1.

 

Nesse seu programa, sempre vai ser apresentada a mesma sequência ao digitar > ou <, não se trata de uma adivinhação de fato, até porque se eu perguntar pra alguém que número estou pensando de 0 à 10, o cara vai me dizer um número aleatório, e é isso o que seu programa deveria fazer, é isso o que eu quis dizer com você usar a função rand().

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!