Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Zodiak98 en 26 Junio 2015, 02:18 am



Título: ¿Cómo evitar almacenamientos no deseados?
Publicado por: Zodiak98 en 26 Junio 2015, 02:18 am
Me gustaría saber cómo podría hacer para evitar que los usuarios ingresaran valores que no corresponden al tipo de variable. Por ejemplo, supongamos que tengo un código bastante sencillo como este:

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main(void)
  5. {
  6.     int n;
  7.     cin >> n;
  8.  
  9.     if(n > 10) cout << "Es mayor que 10" << endl;
  10.     else cout << "Es menor a 10" << endl;
  11.  
  12.     cin.get();
  13.     return 0;
  14. }
  15.  

Pero, ¿cómo podría hacer para prever una situación donde en lugar de un número introduzca un caracter o una cadena de caracteres y realizar otra acción?

Sé que es algo bastante simple y hasta ridículo, pero igual me gustaría saberlo.

Gracias de antemano. :) 


Título: Re: ¿Cómo evitar almacenamientos no deseados?
Publicado por: engel lex en 26 Junio 2015, 02:25 am
solo revisa si cin falló

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main(void)
  5. {
  6.     int n;
  7.     cin >> n;
  8.     if(cin.fail()){
  9.          cout << "esto no es un entero" << endl;
  10.          return 0;
  11.     }
  12.     if(n > 10) cout << "Es mayor que 10" << endl;
  13.     else cout << "Es menor a 10" << endl;
  14.  
  15.     cin.get();
  16.     return 0;
  17. }


Título: Re: ¿Cómo evitar almacenamientos no deseados?
Publicado por: Zodiak98 en 26 Junio 2015, 02:40 am
solo revisa si cin falló

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main(void)
  5. {
  6.     int n;
  7.     cin >> n;
  8.     if(cin.fail()){
  9.          cout << "esto no es un entero" << endl;
  10.          return 0;
  11.     }
  12.     if(n > 10) cout << "Es mayor que 10" << endl;
  13.     else cout << "Es menor a 10" << endl;
  14.  
  15.     cin.get();
  16.     return 0;
  17. }

Vale, gracias.