Gostaria de pontuar uma "boa prática" que foi ensinada nessa aula, o professor escreveu o seguinte trecho de código:
// pré processando condicionais
bool acertou = chute == numero_secreto;
bool maior = chute > numero_secreto;
if(acertou)
{
// do stuff
} else if(maior)
{
// do stuff
} else
{
// do stuff
}
Porém esse código sempre processa a variável "maior", mesmo quando a variável "acertou" já foi computada como verdadeira. Oque é uma má prática considerando que um dos objetivos do "else if" é evitar a execução de condicionais desnecessárias, fora o fato de que você carrega esse valor em memória até o final da execução do escopo. Minha sugestão é que fossem utilizadas funções caso as condicionais se tornassem complexas o suficiente para atrapalhar a legibilidade do código.
if(acertou(chute, numero_secreto))
{
// do stuff
} else if (chutou_maior(chute, numero_secreto))
{
// do stuff
} else {
// do stuff
}
Ou até mesmo mover toda a complexidade para apenas uma função que abstraia a implementação da tratativa de acertos ou erros
string relacao = compara(chute, numero_secreto);
cout << "Sua tentativa é " << relacao << " numero secreto!" << endl;