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?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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?
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
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.