Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Control del ERROR { INT , string }

Estas en el tema de Control del ERROR { INT , string } en el foro de C/C++ en Foros del Web. Hola amigos, Tengo una duda con c++, no se como hacer que mi programa deje de funcionar cuando pongo un caracter en el caso de ...
  #1 (permalink)  
Antiguo 05/06/2012, 11:52
 
Fecha de Ingreso: junio-2012
Mensajes: 1
Antigüedad: 11 años, 10 meses
Puntos: 0
Control del ERROR { INT , string }

Hola amigos,
Tengo una duda con c++, no se como hacer que mi programa deje de funcionar cuando pongo un caracter en el caso de un int, me explico
Si tengo este programa :
*
Código c++:
Ver original
  1. int main() {  
  2. int edad
  3. cout<<"¿Que edad tienes?"<<endl;
  4. cin>> edad;
  5. }
Como puedo hacer que si por equivocación el usuario escribe una caracter o un string cuando el programa espera un entero?
Porque siempre que el usuario se equivoca el programa deja de funcionar.

Muchisssimas gracias !

xavibh

Última edición por xavibh; 05/06/2012 a las 11:59
  #2 (permalink)  
Antiguo 05/06/2012, 12:47
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Control del ERROR { INT , string }

Aqui tienes una posible solucion:

Código C++:
Ver original
  1. // example on extraction
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. int main () {
  6.   int n; char c;
  7.   cout << "Enter a number: ";
  8.   while (1) {
  9.         c=cin.peek();
  10.         if ('0' <= c && c <= '9') {
  11.             cin >> n;
  12.             break;
  13.         } else  cin.get();
  14.  
  15.   }
  16.      cout << "You have entered: " << n << endl;
  17. }

Lo ideal seria hacer una funcion para no estar escribiendo todo el tiempo esto... Saludos

Etiquetas: error-usuario, int, strings
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:04.