Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro no código

Se você colocar mais de 10 digitos, ele dá numero negativo e se for 1 e vários mas vários zeros ele da numero negativo, queria deixar bonitinho, alguém poderia me ajudar?

2 respostas

Achei o resultado,

cluindo as bibliotecas

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main() {

// imprimindo cabecalho bonito do jogo
printf("\n\n");
printf("          P  /_\\  P                              \n");
printf("         /_\\_|_|_/_\\                            \n");
printf("     n_n | ||. .|| | n_n         Bem vindo ao     \n");
printf("     |_|_|nnnn nnnn|_|_|     Jogo de Adivinhação! \n");
printf("    |\" \"  |  |_|  |\"  \" |                     \n");
printf("    |_____| ' _ ' |_____|                         \n");
printf("          \\__|_|__/                              \n");
printf("\n\n");

// declarando variaveis que serao usadas mais a frente
int chute;
int acertou;
int nivel;
int totaldetentativas;

// definindo a quantidade de pontos inicial
double pontos = 1000;

// gerando um numero secreto aleatorio
srand(time(0));
int numerosecreto = rand() % 100;

// escolhendo o nivel de dificuldade
printf("Qual o nível de dificuldade?\n");
printf("(1) Fácil (2) Médio (3) Difícil\n\n");
printf("Escolha: ");

scanf("%d", &nivel);

switch(nivel) {
    case 1: 
        totaldetentativas = 20;
        break;
    case 2:
        totaldetentativas = 15;
        break;
    default:
        totaldetentativas = 6;
        break;
}

// loop principal do jogo
for(int i = 1; i <= totaldetentativas; i++) {

    printf("-> Tentativa %d de %d\n", i, totaldetentativas);

    printf("Chute um número de 1 à 100: ");
    scanf("%d", &chute);

    // tratando chute de numero negativo
    if(chute < 0) {
        printf("Você não pode chutar números negativos\n");
        i--;
        continue;
    }

    if(chute > 100) {
        printf("Você não pode chutar números negativos\n");
        i--;
        continue;
    }

    // verifica se acertou, foi maior ou menor
    acertou = chute == numerosecreto;

    if(acertou) {
        break;
    } else if(chute > numerosecreto) {
        printf("\nSeu chute foi maior do que o número secreto!\n\n");
    } else {
        printf("\nSeu chute foi menor do que o número secreto!\n\n");
    }

    // calcula a quantidade de pontos
    double pontosperdidos = abs(chute - numerosecreto) / 2.0;
    pontos = pontos - pontosperdidos;
}

// imprimindo mensagem de vitoria ou derrota
printf("\n");
if(acertou) {
    printf("             OOOOOOOOOOO               \n");
    printf("         OOOOOOOOOOOOOOOOOOO           \n");
    printf("      OOOOOO  OOOOOOOOO  OOOOOO        \n");
    printf("    OOOOOO      OOOOO      OOOOOO      \n");
    printf("  OOOOOOOO  #   OOOOO  #   OOOOOOOO    \n");
    printf(" OOOOOOOOOO    OOOOOOO    OOOOOOOOOO   \n");
    printf("OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO  \n");
    printf("OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO  \n");
    printf("OOOO  OOOOOOOOOOOOOOOOOOOOOOOOO  OOOO  \n");
    printf(" OOOO  OOOOOOOOOOOOOOOOOOOOOOO  OOOO   \n");
    printf("  OOOO   OOOOOOOOOOOOOOOOOOOO  OOOO    \n");
    printf("    OOOOO   OOOOOOOOOOOOOOO   OOOO     \n");
    printf("      OOOOOO   OOOOOOOOO   OOOOOO      \n");
    printf("         OOOOOO         OOOOOO         \n");
    printf("             OOOOOOOOOOOO              \n");
    printf("\nParabéns! Você acertou!\n");
    printf("Você fez %.2f pontos. Até a próxima!\n\n", pontos);
} else {

    printf("       \\|/ ____ \\|/    \n");   
    printf("        @~/ ,. \\~@      \n");   
    printf("       /_( \\__/ )_\\    \n");   
    printf("          \\__U_/        \n");

    printf("\nVocê perdeu! Era %d Tente novamente! \n\n", numerosecreto);
}

}

eu percebi um padrão que nunca passou de 100 então eu usei essa resposta

solução!

Samuel,

Este é um erro comum na programação

#include <stdio.h>

int main() {
    int n = 1000000000;
    printf("%d\n", n); 
    return 0;
}

Neste caso deve usar o long

#include <stdio.h>

int main() {
  long n = 1000000000;
  printf("%ld\n", n);
  return 0;
}

Espero que tenha ajudado.