Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Meu codigo só está dando números inteiros

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

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

        int numerogrande = rand(); 
        int chute;
        int numerosecreto = numerogrande % 100; 
        int vzs = 0;
        float pontos = 1000;

        printf("\n\t\t\t***********************\n");
        printf("\t\t\t* JOGO DE ADIVINHAÇÃO *\n");
        printf("\t\t\t***********************\n");

        while(chute != numerosecreto)
        {
                vzs++;
                printf("\nDigite seu número\n>>>");
                scanf("%d", &chute);

                if(chute<0)
                {
                        printf("Voce não pode chutar números negativos\n");
                            vzs--;
                        continue; 
                }

                if(chute == numerosecreto)
                {
                        printf("\t\t\t  Parabéns você ganhou na tentativa %d!\n", vzs);
                        printf("\t\t\t  Você ficou com --%f-- pontos\n", pontos); 
                }else{

                        if(chute < numerosecreto)
                        {
                                printf("Um pouco mais!\n");
                        }else{
                                printf("Um pouco menos\n");
                        }

                        float pontosperdidos = (chute - numerosecreto) / 2.0; 
                        pontos = pontos - abs(pontosperdidos);
                }
        }
        return 0;
}
1 resposta
solução!

Olá Victor, tudo bem com você?

Isso aconteceu porque você acabou utilizando a função abs()que por padrão recebe um número inteiro e devolve um número inteiro, vou te dar um exemplo com um print no seu programa:

[Número secreto = 99]

Digite seu número
>>>42
Um pouco mais!
O valor de pontos perdidos: -28.500000 e o valor de abs(pontosperdidos) : 28

Então como você pode ver, além de pegar o valor absoluto temos um problema de conversão pois perdemos as casas decimais quando fazemos essa operação, para fugir disso precisamos utilizar o abs na linha de cima de nosso programa:

float pontosperdidos = abs(chute - numerosecreto) / 2.0; 

Veja que tanto chute quanto número secreto são valores inteiros em nosso programa

Dessa maneira conseguimos pegar o valor absoluto entre o chute e o numerosecreto, e após isso ainda temos a conversão para o formato do tipo double para que na hora de computar a pontuação:

pontos = pontos - pontosperdidos

Tenhamos as casas decimais preservadas :)

Conseguiu compreender?

Abraços e Bons Estudos!