Autor
|
Tema: Ayuda con Código "Simple en C" Hacer que solo se ingresen numeros (Leído 12,932 veces)
|
ZedGe
Desconectado
Mensajes: 154
|
Tengo un programa en C, y como todo programa tiene un menu, mi menu tiene la opcion 1,2,3 y 10 salir. Quiero que al ingresar un numero distintos de esos o una letra salga un mensaje avisando de ello y que el programa corra. Tengo este codigo if (opcion>3 && opcion<1 && opcion != 10) { printf("\n Porfavor ingrese un valor valido (1-3 o 10), presione una tecla para salir:"); getch(); menu(); }
pero al ingresar letras se cae :/ Aparte solo debo usar librerias Standar de C
|
|
|
En línea
|
|
|
|
Caster
|
Añado "else", que significa si no se elige ninguna de las opcines anteriores. if (condición) { //Código }else { //código }
|
|
|
En línea
|
|
|
|
KuraraGNU
Desconectado
Mensajes: 209
|
En vez de && tienes que usar or que supongo que será || no se c
|
|
|
En línea
|
|
|
|
ZedGe
Desconectado
Mensajes: 154
|
|Demon|: Si pongo solo un if y que si se cumple se salga creo que no es necesario el else
KuraraGNU: con el || se vuelve a caer al ingresar una letra
|
|
|
En línea
|
|
|
|
Caster
|
|Demon|: Si pongo solo un if y que si se cumple se salga creo que no es necesario el else
KuraraGNU: con el || se vuelve a caer al ingresar una letra
No entiendo, ¿un if aparte solo para la opcion de salir?
|
|
|
En línea
|
|
|
|
ZedGe
Desconectado
Mensajes: 154
|
es que mira, si es distinto de esos números por ejemplo entra el IF y si pongo en el if que retorne al menú que es otra función se saldrá del menu, en caso de que no entre al IF hará inmediatamente lo que esta bajo el IF entonces no es necesario poner un else
|
|
|
En línea
|
|
|
|
KuraraGNU
Desconectado
Mensajes: 209
|
Si quieres hago el código entero con el else y demás, pero esperaba que lo hiciese el autor del post, yo sólo te dije que poniendo && no vas bien, porque estás diciendo que cuando ocurra que sea menor que 1 y mayor que tres y distinto de 10 salte la función, ya me dirás tú a mi qué número hay que sea A LA VEZ menor que 1 y mayor que 3, es por eso que en vez de && tienes que usar || (que es or), porque cuando ingreses un número que o bien sea menor que uno, o mayor que tres o distinto de 10 te salte eso, y los números que cumplen eso son todos menos el 1 2 3 y el 10. Si quieres te busco documentación para que te aclares si con mi explicación no te vale con el || se vuelve a caer al ingresar una letra
Pues tiene que ser que lo que pones dentro de la función está mal, no se que hace la función getch(); pero te tiene que salir todo lo que hayas puesto dentro. Quizás la propia función menu(); está mal, no puedo verlo sólo con ese código. Ponle una pausa después del mensaje y verás como al menos eso se ve y será problema de las otras funciones.
|
|
« Última modificación: 30 Diciembre 2011, 20:26 pm por KuraraGNU »
|
En línea
|
|
|
|
Caster
|
Es muy fácil de explicar, si escribes "&&" estás buscando un número que cumpla las tres condiciones, pero si pones ||(o or) estás haciendo referencia a un número que con que cumpla una sola condición de las expuestas pueda entrar en el If. En cuanto a como usar if, es mejor que crees un if general (para todo el programa) diciéndole, que si cumple la condición siga con su ejecución o si no es correcta la opción ("else") vuelva el menu, me explico: if (condicion) { //Aquí el codigo principal del programa }else { //y aqui el codigo que nos diste tu antes }
Saludos
|
|
« Última modificación: 30 Diciembre 2011, 20:28 pm por |Demon| »
|
En línea
|
|
|
|
ZedGe
Desconectado
Mensajes: 154
|
Si quieres hago el código entero con el else y demás, pero esperaba que lo hiciese el autor del post, yo sólo te dije que poniendo && no vas bien, porque estás diciendo que cuando ocurra que sea menor que 1 y mayor que tres y distinto de 10 salte la función, ya me dirás tú a mi qué número hay que sea A LA VEZ menor que 1 y mayor que 3, es por eso que en vez de && tienes que usar || (que es or), porque cuando ingreses un número que o bien sea menor que uno, o mayor que tres o distinto de 10 te salte eso, y los números que cumplen eso son todos menos el 1 2 3 y el 10. Si quieres te busco documentación para que te aclares si con mi explicación no te vale Porfavor, lo puse con || al hacerlo como no funciono puse && xD pero el problema es el mismo, al poner una letra queda en un bucle infinito entre el menu y el printf, de verdad no lo entiendo por que al poner una letra y leeerlo como int lo pasa a un numero i ese numero no esta dentro de las condiciones
|
|
|
En línea
|
|
|
|
ZedGe
Desconectado
Mensajes: 154
|
asi tengo el codigo if (opcion>3 || opcion<1 || opcion != 10) { rintf("\n Porfavor ingrese un valor valido (1-8), presione una tecla para salir:"); getch(); menu(primero);//primero es una lista enlazada no tiene importancia aca } Al ingresar la letra sale este printf en una nueva ventana (ventana de c en blanco con ese mensaje), al apretar enter deberia entrar al menu, pero presiono enter muestra el menu en 1 segundo y vuelve a mostrar el mensaje.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Ayuda] modificar "start page" en "internet explorer" con "batch"
Scripting
|
taton
|
7
|
17,289
|
20 Septiembre 2006, 01:45 am
por taton
|
|
|
El Nuevo ImgBurn no tiene la opción de "Read" sólo de escritura "Write" (¿?)
Software
|
Ad0nis
|
0
|
3,567
|
27 Octubre 2006, 14:10 pm
por Ad0nis
|
|
|
Como sumo los numeros de un entero hasta que me de "n" numeros (Resuelto)
« 1 2 »
Programación C/C++
|
¡Micronet!
|
18
|
10,827
|
16 Noviembre 2010, 00:26 am
por ¡Micronet!
|
|
|
recursos visual basic, """"""proceso inmortal"""""
Análisis y Diseño de Malware
|
Dark4ngel
|
7
|
14,180
|
3 Noviembre 2011, 10:42 am
por Dark4ngel
|
|
|
La Operacion en varios pasos genero errores... AYUDA AQUI"""""
Programación Visual Basic
|
JoseCheO
|
1
|
8,089
|
23 Diciembre 2011, 16:57 pm
por JoseCheO
|
|