Dev - C++ - introducir una cadena de caracteres en una variable INT

 
Vista:
sin imagen de perfil

introducir una cadena de caracteres en una variable INT

Publicado por Aristeo (2 intervenciones) el 27/09/2017 01:16:54
Hola, queria saber si alguien me puede ayudar con este problema de c++:

1.- tengo que declarar una variable entero "int" (si o si :( )
2.- leer esa variable
3.- si introduzco cualquier otro dato que no sea un entero es decir un numero (ejemplo una palabar "gato" o "sistema" etc), el programa me dira que es un dato erroneo y me volvera a preguntar, esto es una idea que tengo de como hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main(){
 
    int numero;      ///este es el numero que quiero leer
 
    do{
 
       ///aqui leo el numero
 
        cout << "INTRODUZCA UN NUMERO: ";
        cin>> numero;
 
 
      if (aqui no se que condicion poner){
         cout << "dato erroneo";
      }
 
    }while(aqui tampoco se que poner XD);
 
}

estube pensando en implementar un try-catch pero no se como dar la exepcion
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 417
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

introducir una cadena de caracteres en una variable INT

Publicado por Thanatos (199 intervenciones) el 27/09/2017 08:05:49
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <limits>
 
using namespace std;
 
int main() {
    int n;
 
    while (true) {
        cout << "Ingrese un numero:\nnumero = ";
        if (cin >> n) {
            break;
        } else {
            cin.clear();
            (void) cin.ignore(numeric_limits<streamsize>::max(), '\n');
            cout << "\n* Dato erroneo *\n\n";
        }
    }
    cout << "El numero es: " << n << '\n';
 
    return 0;
}


Con Try-Catch:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <limits>
 
using namespace std;
 
int main() {
    int n;
 
    cin.exceptions(istream::failbit);
    while (true) {
        try {
            cout << "Ingrese un numero:\nnumero = ";
            cin >> n;
            break;
        } catch (const ios_base::failure &f) {
            cin.clear();
            (void) cin.ignore(numeric_limits<streamsize>::max(), '\n');
            cout << "\n* Dato erroneo *\n\n";
        }
    }
    cout << "El numero es: " << n << '\n';
 
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar