4
respostas

A pontuação sempre sai como 1000

Independente do número de tentativas, a pontuação sai como 1000. O código é o seguinte:

#include<iostream>
#include<stdlib.h>
using namespace std;

int main () {
    cout << "***********************************"<< endl;
    cout << "*Bem vindos ao Jogo da Adivinhação*"<< endl;
    cout << "***********************************"<< endl;

    const int NUM = 42;
    bool naoacertou = true;
    int tentativa = 0;
    double PONTOS = 1000.0;

    while (naoacertou) {    
        tentativa = tentativa + 1 ;
        cout << "tentativa nº: " << tentativa << endl ;

        cout << "Qual o seu chute? ";
        int chute;
        cin >> chute;

        double pontosperdidos = abs((chute - NUM)/2.0);

        bool acertou = chute == NUM;
        bool maior = chute > NUM;

        if (acertou){
            cout << "Parabéns, você acertou o número secreto.";
            cout << endl;
            if (tentativa > 1){
                cout << "você acertou em " << tentativa << " tentativas e";
            }
            else
                cout << "você acertou em " << tentativa << " tentativa e";

            if ((PONTOS - pontosperdidos) != 1){
            cout << " fez " << (PONTOS - pontosperdidos) << " pontos.";
            }
            else
                cout << " fez 1 ponto." ;
            naoacertou = false;
        }
        else if (maior) {
            cout << "O seu chute foi maior do que o número secreto.";
        }
            else
                cout << "seu chute foi menor do que o número secreto.";

        cout << endl ;
    }
cout << "Fim de jogo" ;
}
4 respostas

Oi, Ciro, pontosperdidos vai ser sempre 0 (zero) quando vc acerta

Vc precisa somar os pontosperdidos


#include <iostream>
#include <stdlib.h> 
using namespace std;

int main () { 

cout << "*************************************" << endl; 
cout << "* Bem vindos ao Jogo da Adivinhação *" << endl; 
cout << "*************************************" << endl;

const int NUM = 42;
bool naoacertou = true;
int tentativa = 0;
double PONTOS = 1000;
double pontosperdidos = 0;

while (naoacertou) {    
    tentativa = tentativa + 1 ;
    cout << "tentativa nº: " << tentativa << endl ;

    cout << "Qual o seu chute? ";
    int chute;
    cin >> chute;

    pontosperdidos += abs((chute - NUM)/2.0);

    bool acertou = chute == NUM;
    bool maior = chute > NUM;

    if (acertou){
        cout << "Parabéns, você acertou o número secreto.";
        cout << endl;
        if (tentativa > 1){
            cout << "você acertou em " << tentativa << " tentativas e";
        }
        else
            cout << "você acertou em " << tentativa << " tentativa e";

        if ((PONTOS - pontosperdidos) != 1){
        cout << " fez " << (PONTOS - pontosperdidos) << " pontos.";
        }
        else
            cout << " fez 1 ponto." ;
        naoacertou = false;
    }
    else if (maior) {
        cout << "O seu chute foi maior do que o número secreto.";
    }
        else
            cout << "seu chute foi menor do que o número secreto.";

    cout << endl ;
}
cout << "Fim de jogo" ; 
}

Luís, agradeço a resposta, mas não deu certo. Se eu erro três tentativas, com quaisquer números, na quarta eu ainda saio com 1000 pontos, somando ou subtraindo os pontos perdidos.

Ciro, mostre como ficou o seu código.

Vc alterou pontosperdidos como mostrado acima?

Eu testei o código q te envie e está ok

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Opa! Deu certo sim! Eu que tinha entendido errado! Grato, Luís!