1
resposta

[Bug] Meu programa retorna valor errado

Meu código está perfeitamente igual aos códigos mostrados pelas video-aulas, entretanto, sempre que execulto o programa, o mesmo me retorna um valor equivocado.

No caso abaixo, mesmo eu digitando caracteres errados, ele retorna true e não false. `

#include

#include

using namespace std;

const string PALAVRA_SECRETA = "melancia";

bool letra_existe(char chute ) { for (int i = 0; PALAVRA_SECRETA.size(); i++) { if (chute == PALAVRA_SECRETA[i]){ return true; } } return false;

}

int main() { cout << PALAVRA_SECRETA << endl;

bool nao_acertou = true;
bool nao_enforcou = true;

while (nao_acertou && nao_enforcou)
{
    char chute;
    cin >> chute;

    if (letra_existe(chute)){
        cout << "Voce acertou! Seu chute esta na palavra. \n"; 
    }else{
        cout << "Voce errou! Seu chute nao esta na palavra. \n";
    }


}

}`

1 resposta

O comando for tem 3 partes: início; teste_para_encerrar; passo

Teu teste não está correto, só tem o valor da string, mas não tem um teste para ver se a variável de controle é menor que a string, de forma que ele teste somente dentro da string. Acredito que ele percorre a memória até achar um caractere igual, então returna true.