Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/04/2013, 17:46
cesar_casla
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 13 años
Puntos: 94
Respuesta: Donde esta el error?

Hola! Como ya te diste cuenta el error se debe al ingresar una letra en vez de un entero. Esto ocurre porque al introducir el caracter cin genera un error haciendo que en opcion no se almacene nada, pero que sucede con el caracter ingresado??? este caracter queda en el bufer del teclado y por lo tanto en cada ciclo del while, cin va a generar un error ya que intenta leer constantemente esa letra.
Para solucionar el error tenes que limpiar el bufer del teclado agregando este bucle:
Código C:
Ver original
  1. cin >> opcion;
  2.             while(getchar()!='\n'); /* limpia bufer */


Otra solucion seria trabajar con caracteres, osea q opcion sea de tipo char


Saludos

PD: como estas en C++ creo q deberias usar cin.get en vez de getchar(pero igual deberia funcionar)