Ir ao conteúdo

Posts recomendados

Postado

Faça um programa na linguagem de programação C. Seu programa deve adivinhar um número entre 1 e 100 escolhido pelo usuário. O programa deve pedir para o usuário escolher um número, e depois propor valores para esse número. A cada número proposto pelo programa, deve pedir ao usuário informação sobre se seu número é igual, maior ou menor que o número escolhido. O programa deve usar essa informação para a próxima escolha. O programa deve identificar se o usuário estiver mentindo.

  • Obrigado 1
  • Moderador
Postado

Caro usuário,

 

Seja bem-vindo ao Clube do Hardware.

 

No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware.

 

Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício.

 

Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal.

 

Esperamos que compreenda.

 

Atenciosamente,

Equipe Clube do Hardware

  • Curtir 1
Postado

@phinky88     o computador saberá exatamente qual o número que o usuário digitou ,  então use o comando  if  para comparar e verificar se o número é menor maior ou iguaL , e se o usuário informar que o número é maior e for iguaL ou menor então mentiu ,  então faça um código sobre esse exercício e poste aqui , e ajudaremos caso precise de alguma correção    

Postado

@devair1010 preciso fazer algum comando caso o usuario esteja mentindo como faço?

#include <stdio.h>

void adivinha() {
    int aleatorio, ultimo=100,primeiro=1,tentativas=0;
    char simbolomate;
    do{
        aleatorio = primeiro + (ultimo-primeiro) /2;
        tentativas ++;
        printf("O número que você escolheu é maior,menor ou igual a %d? Digite '>', '<' ou '=' respectivamente\n Número de tentativas : %d\n",aleatorio,tentativas);
        scanf(" %c",&simbolomate);
        switch (simbolomate){
            case '=':
               printf("número correto");
               break;
            case '>':
               primeiro = aleatorio + 1;
               break;
            case '<':
               ultimo = aleatorio - 1;
               break;
        }
    } while(simbolomate != '=');
}

int main()
{
    int numero, tentar_de_novo=1;
    do{
        printf("Pense e digite um número de 1 a 100\n");
        scanf("%d",&numero);
        adivinha();
        printf("Se você deseja jogar novamente digite um qualquer numero, se não digite 0\n");
        scanf("%d",&tentar_de_novo);
    }while(tentar_de_novo);
    return 0;
}

 

  • Obrigado 1
Postado

@phinky88     você precisa enviar o numero que o usuário escolheu , lá para a função adivinha , pois essa variável numero , é do tipo LocaL , e lá em outras funções ela não existe e o compilador não sabe o valor dela , ou coloca essa variável numero como Global , criada antes da função main , mas isso não é de boa prática ,  e então você compara o numero sugerido pelo computador com o numero escolhido , e mostra mensagem correspondente ,  e seu código com algumas modificações poderia ser assim   :

#include <stdio.h>
int mentiu(int aleatorio,int numero);// protótipo da função
int adivinha(int numero) // seria melhor colocar essa função lá em baixo , depois da função main ,  também
{ 
    int aleatorio, ultimo=100,primeiro=1,tentativas=0;
    char simbolomate;
    do
    {
        aleatorio = primeiro + (ultimo-primeiro) /2;
        tentativas ++;
        printf("O número que você escolheu é maior , menor ou igual a %d? ",aleatorio);
        printf("Digite '.', ',' ou '=' respectivamente\n");
        printf("Número de tentativas : %d\n",tentativas);
        scanf(" %c",&simbolomate);
        switch (simbolomate)
        {
        case '=':
            if( aleatorio != numero )//verifica se são iguais
                mentiu(aleatorio,numero);
            else
                printf("numero correto");
            break;
        case '.':
            if( aleatorio >= numero )//verifica aleatorio maior ou igual ao numero
                mentiu(aleatorio,numero);
            primeiro = aleatorio + 1;
            break;
        case ',':
            if( aleatorio <= numero )//verifica aleatorio menor ou igual ao numero
                mentiu(aleatorio,numero);
            ultimo = aleatorio - 1;
            break;
        }
    } while( aleatorio !=  numero );
}

int main()
{
    int numero, tentar_de_novo=1;
    do
    {
        printf("Pense e digite um número de 1 a 100\n");
        scanf("%d",&numero);
        adivinha(numero);// envia o número escolhido para a função
        printf("Se você deseja jogar novamente digite um qualquer numero, se não digite 0\n");
        scanf("%d",&tentar_de_novo);
    }while( tentar_de_novo );
    return 16;
}
int mentiu(int aleatorio,int numero)
{
    printf("Mentiu !\n");
    printf("O Numero que você pensou é %d eh não eh igual a %d\n",numero,aleatorio);
}

 

Postado

@devair1010 obrigado pelo código mas eu nao quero que o computador saiba o numero, eu só mandei digitar o numero pensado apenas para visualizar mas não para o computador saber, eu criei um código e consegui fazer do jeito que eu quero o único problema agora é que eu nao consigo resetar o programa caso a pessoa esteja mentindo da uma olhada e testa para mim por favor e se puder ajudar também...

#include <stdio.h>

void adivinha() {
    int aleatorio, ultimo=100,primeiro=1;
    char simbolomate;
    do{
        aleatorio = primeiro + (ultimo-primeiro) /2;
        printf("O número que você escolheu é maior,menor ou igual a %d? Digite '>', '<' ou '=' respectivamente\n",aleatorio); 
        scanf(" %c",&simbolomate);
        switch (simbolomate){
            case '=':
               printf("número correto\n");
               break;
            case '>':
               if(primeiro == aleatorio){
                   printf("Você está mentindo!! Por favor fale a verdade\n"); 
                   break;
               }
               primeiro = aleatorio + 1;
               break;
            case '<':
               if(ultimo == aleatorio + 1){
                   printf("Você está mentindo!! Por favor fale a verdade\n"); 
                   break;
               }
               ultimo = aleatorio - 1;
               break;
        }
    } while(simbolomate != '=' || primeiro == aleatorio || ultimo == aleatorio + 1 );
}

int main()
{
    int numero, tentar_de_novo=1;
    do{
        printf("Pense e digite um número de 1 a 100\n");
        scanf("%d",&numero);
        adivinha();
        printf("Se você deseja jogar novamente digite um qualquer numero, se não digite 0\n");
        scanf("%d",&tentar_de_novo);
    }while(tentar_de_novo);
    return 0;
}

 

  • Amei 1
Postado

@phinky88    Olá , Ok ,  esse código que você mandou agora é praticamente igual ao outro que já estava , e creio que você esteja Querendo algo impossível , pois o computador não tem condições de adivinhar nada , ele só sabe o que for armazenado em seus bits de memória , então para ele saber se o usuário mentiu ele precisa comparar uma coisa com outra coisa , e aí sim ele saberá se é igual ou diferente , e  menor ou maior , sinto muito , mas do jeito Que você pretende , nunca conseguirá ,  desculpe .

   e o que você quis dizer com , resetar o programa ? ,  e nesse seu código , o que acontece é que você é quem diz para o computador que os números são iguais , e nem precisa que realmente sejam , e ele acredita na sua resposta e termina o programa , emitindo a mensagem de que a resposta está certa  , independente de que os números sejam iguais ou não  .

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