Estoy tratando de tomar un número entero para ingresar e imprimirlo solo si el número es <= 2000 o si no se le pide al usuario que vuelva a ingresar el número una y otra vez.

Cuando ingreso un número mayor que 2000, me pide que ingrese el número nuevamente (que es exactamente lo que estoy tratando de hacer) y si ingreso un número mayor que 2000 nuevamente no hace nada. Parece que el ciclo se está ejecutando para siempre, pero no sé qué hice mal. Cualquier ayuda es apreciada.

Aquí está el código escrito en C ++.

#include <iostream>

using std::cout;
using std::endl;
using std::cin;

int main(){

unsigned int a = 0 ;
int out = 1;

cout << "Please enter a number : " << endl;

while (out){
    cin >> a;
    if (a > 2000) {
        cout << "Number is greater than 2000 !" << endl;
        cout << endl;
        cout << "Please enter the number again : " << endl;
        cin >> a;
        out = 1;
    } else {
        cout << "Your entered number is : " << endl << a << endl;
        out = 0;
    }
}
return 0;
}
c++
2
blackGreap 14 ene. 2018 a las 19:31

3 respuestas

La mejor respuesta

y si vuelvo a ingresar un número mayor que 2000, no hace nada

Eso no está bien, está esperando que ingrese la siguiente entrada cin. Dado que tiene dos cin s en el ciclo para valores a mayores que 2000, el segundo {{X3 }} no recibe un aviso.

Su programa se puede simplificar mucho, cambie la parte while loop como se muestra a continuación

while (out){
    cin >> a;
    out=a>2000?1:0;
    if(out)
       cout<<"Enter number again ";
}
1
sjsam 14 ene. 2018 a las 16:53

No lo he probado, pero puedes probar esto:

#include <iostream>

using std::cout;
using std::endl;
using std::cin;

int main(){

unsigned int a = 0 ;

cout << "Please enter a number : " << endl;

while (true){
    cin >> a;
    if (a > 2000) {
        cout << "Number is greater than 2000 !" << endl;
        cout << endl;
        cout << "Please enter the number again : " << endl;
    } else {
        cout << "Your entered number is : " << endl << a << endl;
        break;
    }
}
return 0;
}
1
Vice 14 ene. 2018 a las 16:37

En el if (a > 2000)

No cin, y su código comenzará a funcionar, la razón es que no necesita ingresar aquí porque el bucle lo hará por usted.

1
Muhammad Rehan Qadri 14 ene. 2018 a las 16:40