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

Menu

Estas en el tema de Menu en el foro de C/C++ en Foros del Web. Hola al intentar hacer un menu asi: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C++: Ver original do {     Menu ( ) ;     scanf ( ...
  #1 (permalink)  
Antiguo 13/01/2011, 17:08
Avatar de Kristhoff  
Fecha de Ingreso: abril-2009
Ubicación: Popayán - Cauca
Mensajes: 550
Antigüedad: 15 años
Puntos: 12
Menu

Hola
al intentar hacer un menu asi:

Código C++:
Ver original
  1. do
  2. {
  3.     Menu();
  4.     scanf("%i",&Opcion);
  5.     switch(Opcion)
  6.     {
  7.          case 1: cosas....
  8.          case 2: cosas....
  9.          default: printf("Error");
  10.     }
  11. }while(Opcion!=0);

me imprime error infinitas veces y me deja continuar, la variable opcion es entera y este error aparece al escribir un caracter.
Como puedo solucionar eso??
  #2 (permalink)  
Antiguo 13/01/2011, 17:16
 
Fecha de Ingreso: junio-2006
Ubicación: España
Mensajes: 122
Antigüedad: 17 años, 11 meses
Puntos: 2
Respuesta: Menu

puedes hacer un bucle que te haga el scanf hasta que el valor introducido sea un numero y recuerda en poner el fflush(); para no tener problemas.
__________________
Twitters de famosos
  #3 (permalink)  
Antiguo 13/01/2011, 17:25
Avatar de Kristhoff  
Fecha de Ingreso: abril-2009
Ubicación: Popayán - Cauca
Mensajes: 550
Antigüedad: 15 años
Puntos: 12
Respuesta: Menu

bueno no deberia tener problemas en volver a leer la opcion ya que todo esta dentro del do-while, pero al escribir un caracter se queda en un bucle infinito mostrando el mensaje de error.
Como podria usar fflush para corregir mi problema?
  #4 (permalink)  
Antiguo 13/01/2011, 17:35
 
Fecha de Ingreso: junio-2006
Ubicación: España
Mensajes: 122
Antigüedad: 17 años, 11 meses
Puntos: 2
Respuesta: Menu

do
{
system("clear");//limpio pantalla
//limpio el buffer
fflush(stdin);
scanf("%d",&numero);
fflush(stdin);
}while(numero<1 || numero>2);
__________________
Twitters de famosos
  #5 (permalink)  
Antiguo 13/01/2011, 17:45
Avatar de Kristhoff  
Fecha de Ingreso: abril-2009
Ubicación: Popayán - Cauca
Mensajes: 550
Antigüedad: 15 años
Puntos: 12
Respuesta: Menu

Ok amigo, funciona, lo probare y espero que me funcione en mi codigo. Muchas gracias.....Carma positivo.

.....Unos minutos despues....

Bien mi amigo, muchas gracias ha funcionado de maravilla, me gustaria saber por que pasaba el error.Gracias.

Última edición por Kristhoff; 13/01/2011 a las 19:08
  #6 (permalink)  
Antiguo 14/01/2011, 02:34
 
Fecha de Ingreso: junio-2006
Ubicación: España
Mensajes: 122
Antigüedad: 17 años, 11 meses
Puntos: 2
Respuesta: Menu

Hola!, Pues la explicación yo no la sé... sé que cuando yo hacia C, cuando hacia prácticas, muchas veces siempre tenia este problema, (tenia que leer por teclado en teoria digitos y te meten caracter) y si se le metia caracter se volvia loco, y una solución para controlar eso era obligar a que el usuario metiera el rango de digitos que querias.
__________________
Twitters de famosos
  #7 (permalink)  
Antiguo 14/01/2011, 11:33
Avatar de Munire  
Fecha de Ingreso: julio-2010
Ubicación: en el ciberdespacio (España)
Mensajes: 150
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: Menu

Cita:
Iniciado por Kristhoff Ver Mensaje
me imprime error infinitas veces y me deja continuar, la variable opcion es entera y este error aparece al escribir un caracter.
Como puedo solucionar eso??
tienes que poner break; en cada caso. si no lo pones se ejecutan todos los casos, por eso imprime error siempre
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 19:59.