1
resposta

[Dúvida] Problemas no resultado

Na hora de dar o resultado, aparece com vários zeros um ponto que separa quatro numeros para um lado e outro. Gostaria de saber o que está de errado.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{

 int segundos = time(0);
 srand(segundos);

 int numerogrande = rand();

 int numerosecreto = numerogrande % 100;
 int chute;
 int tentativas = 1;
 double pontos = 1000;

 while(1){

printf("Tentativa %d\n", tentativas);
printf("Estamos no jogo, digite o numero secreto\n");

scanf("%d", &chute);
printf("Seu chute foi %d\n", chute);

if(chute<0){

    printf("Não pode numeros negativos no programa");
    continue;

}

int acertou = (chute == numerosecreto);
int maior = (chute > numerosecreto);

if(acertou){

    printf("Seu numero foi maior que o numero secreto!", chute);
    break;
} else if(maior){

printf("Seu numero foi maior que o numero secreto", chute);

} else{

printf("Seu numero foi menor que o numero secreto", chute);

}

tentativas++;

double pontosperdidos = (double)abs(n-numerosecreto)/2.0;
pontos = (double)(pontos-perdas);

}

printf("Fim de jogo/n");
printf("Voce acertou em %d tentativas!\n", tentativas);
printf("Total de pontos: %f\n", pontos);

}
1 resposta

Fala Henrique, tudo certo?

Quando lidamos com dados do tipo float no printf(), e precisamos utilizar a máscara %f ela nos exibe o número sem nenhum tratamento de formatação, mas nós podemos alterar isso adicionando mais algumas informações! Será algo do tipo:

%x.yf;

Onde:

  • x é o número de casas que o número completo vai ocupar, por exemplo se formatarmos o número 8 para ocupar 8 casas, vai acontecer algo como:
// 1 2 3 4 5 6 7 8
                  8

// Ou seja, ele vai ter o espaço reservado apenas para o número. Por padrão, se mostra o número inteiro, ocupando somente a quantidade de casas necessária.
  • y é a quantidade de casas decimais que serão mostradas, por exemplo se formatarmos o número 24.0000000 para ter duas casas decimais, teremos:
24.00;

E com esse conhecimento que temos podemos formatar números de diversas maneiras, por exemplo, utilizando a máscara:

printf("Total de pontos: %8.2f\n", pontos);

E supondo que a pontuação total tenha sido 564.3, será exibido na tela algo como:

// 1 2 3 4 5 6 7 8 
          5 6 4.3 0

Ou seja, respeitando o espaço de 8 casas, e mostrando apenas dois dígitos após a vírgula!

Para se aprofundar mais, recomendo a leitura da documentação sobre especificadores de tipos em C, da GeeksForGeeks, que está em inglês mas caso seja necessário você pode utilizar a ferramenta de tradução do seu navegador para facilitar a compreensão!

Em caso de dúvidas, estou à disposição.

Um grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!