elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda menu
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda menu  (Leído 1,297 veces)
s3v3r

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Ayuda menu
« en: 24 Diciembre 2015, 14:28 pm »

Hola :D el caso es que quería hacer un menu con 5 opciones que si no se pincha ninguna de ellas me salte el menu otra vez... sencillo pero parece que no  :laugh:

Lo que tengo hasta ahora:


void menu() {
  char c;
  do {
    printf ("Menu\n");
    printf ("      A        (Pulsa A)\n");
    printf ("      O        (Pulsa O)\n");
    printf ("      C        (Pulsa C)\n");
    printf ("      V        (Pulsa V)\n");
    printf ("      S        (Pulsa S)\n");
    scanf("%c", &c);
    switch (c) {
  case 'A':      case 'a':
      A();
      break;
  case 'O':      case 'o':
      O();
      break;
  case 'C':      case 'c':
      C();
      break;
  case 'V':      case 'v':
      V();
      break;
  case 'S':      case 's':
      break;
    }
  } while (c!='S' || c!='s');

}

int main() {
  menu();
}


1)No se si esta bien hecho pero si pongo dos opciones en el while deja de funcionar... con nunguna de las dos se sale del menu.
2)No entra en ninguno de los casos desde que pongo el do while, solo se repite el menu constantemente aunque ponga unos valores correctos a c.
3)Cuando repite el menu siempre se repite 2 veces manteniendo el que ya estaba.

Si alguien puede ayudarme con esos 3 puntos


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ayuda menu
« Respuesta #1 en: 24 Diciembre 2015, 17:05 pm »

Piensa bien la condición: c != 'S' || c != 's'
O es diferete de 'S', o es diferente de 's'. Siempre va a ser diferente de una de ellas.

Será: c!='S' && c!='s'


En línea

s3v3r

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Ayuda menu
« Respuesta #2 en: 24 Diciembre 2015, 17:37 pm »

Cierto!!! Muy cierto, resulto estupido segun me lo explicaste jajajajaja
Fallo garrafal pero sigue saliendome dos veces cuando aprieto alguna condicion correcta... A o a
Puede ser que llame en el main y luego sea el do while en menu?
« Última modificación: 24 Diciembre 2015, 17:42 pm por s3v3r » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Ayuda menu
« Respuesta #3 en: 24 Diciembre 2015, 18:46 pm »

Muy buenas.

Pues eso es porque cuándo has introducido la opción a la siguiente ejecución del menú en el bufer del teclado sigue quedando el carácter de nueva línea. Éste es aceptado por scanf y la ejecución continua.

Inserta el código en tu switch y lo verás
Código
  1.  case '\n':
  2.      printf("*** NL ***\n");

Debes encontrar una forma de eliminar el este carácter del buffer después del scanf.

Eso sí, fflush(stdin); no es la forma  :rolleyes:
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
DVD sin menu... (ayuda)
Multimedia
g-unit 3 2,096 Último mensaje 1 Septiembre 2005, 14:14 pm
por g-unit
ayuda con menu
Programación Visual Basic
bautistasbr 4 1,312 Último mensaje 10 Marzo 2006, 21:23 pm
por bautistasbr
como lleno los datos que tiene un menu a otro menu vacio, en asp.net c#
.NET (C#, VB.NET, ASP)
ivan05f 2 3,602 Último mensaje 8 Noviembre 2007, 18:58 pm
por ivan05f
Restaura el menú inicio en Windows 8 con Start Menu Reviver
Noticias
wolfbcn 0 2,093 Último mensaje 19 Mayo 2013, 13:38 pm
por wolfbcn
Menú de usuario en Windows 8.1 y olvida el menú de inicio
Noticias
wolfbcn 0 1,639 Último mensaje 23 Septiembre 2014, 14:00 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines