Boa tarde, tudo bem?
Estou no curso "Avançando com C++: entenda melhor a linguagem" dentro da aula 4 no vídeo "Const" onde propõe um desafio em torno de 7:10 min.
Já ficou bem confusa a lógica aplicada na parte da função "nao_acertou" que é essa:
bool nao_acertou(std::string& palavra_secreta, const std::map<char, bool>& chutou)
for (char letra : palavra_secreta)
{
if (chutou.find(letra) == chutou.end() || !chutou.at(letra))
{
return true;
}
}
return false;
A lógica dentro do IF achei bem complicada, mas é por conta de evitar a modificação no map chutou (definida com const no parâmetro) e com essa lógica é possível... sem o const o if era assim if(!chutou[letra])
E propõe fazer o mesmo na função imprime_palavra:
void imprime_palavra (std::string& palavra_secreta, const std::map<char, bool>& chutou)
{
for (char letra : palavra_secreta)
{
if (chutou[letra])
{
std::cout << letra << " ";
}
else
{
std::cout << "_ ";
}
}
std::cout << std::endl;
}
Como não consigo montar, na minha cabeça, o if adequado que diga ás letras que são falsas sem modificar no map chutou (por conta do const aplicado no map)