Самым простым способом было бы изменить getPassword
так, чтобы он возвращал bool
, который означает, что пользователь ввел правильный пароль.Тогда вместо while (true)
, скажем for (int i = 0; i < 3; ++i)
... и вместо break
, return true
.После цикла return false
, так как они прошли 3 раунда без ввода правильного пароля.
В остальной части программы, вместо простого вызова getPassword
, проверьте ее возвращаемое значение.Если значение равно false, выведите сообщение об ошибке и выйдите.
Что-то вроде:
bool checkPassword() { // renaming this, since it doesn't just *get* a password
for (int i = 0; i < 3; ++i) {
string password;
std::cout << "Enter password: " << std::flush;
std::getline(std::cin, password);
if (password == "123456") return true;
std::cout << "INVALID.\n";
}
std::cout << "Maximum attempts exceeded.\n";
return false;
}
int main() {
if (!checkPassword()) {
return 1;
}
... rest of main() here ...
}