Tengo un programa de este tipo:¿Por qué este programa entra en un bucle infinito?
#include <stdlib.h>
#include <iostream>
static int pswd=0;
int main() {
do {
std::cout<<"I need your password:"<<std::endl;
std::cin>>pswd;
} while (pswd!=3855);
std::cout<<"Congratulations! Your password is correct! Your soul is free again!"<<std::endl;
}
Y tengo, puede haber, una pregunta estúpida. Cuando ingreso valores no válidos (con símbolos no numéricos o valores mayores que int) el programa entra en un bucle infinito sin leer ninguna información de la consola.
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
I need your password:
...
¿Por qué este programa entra en un bucle sin fin?
Esto tratará la entrada no numérica como una contraseña correcta. – interjay
Quizás sería mejor absorber la entrada fallida en lugar de un 'break' –
No presté realmente atención a la semántica del ciclo. Se trata principalmente de ilustrar el manejo de errores. –