elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 23:25  


Tema destacado: [AIO elhacker.NET] Compilación herramientas análisis y desinfección malware

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Ayuda con Código "Simple en C" Hacer que solo se ingresen numeros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con Código "Simple en C" Hacer que solo se ingresen numeros  (Leído 1,032 veces)
ZedGe

Desconectado Desconectado

Mensajes: 111


Ver Perfil
Ayuda con Código "Simple en C" Hacer que solo se ingresen numeros
« en: 30 Diciembre 2011, 20:06 »

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

Código:
 
 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


Desconectado Desconectado

Mensajes: 405


Divide y vencerás


Ver Perfil WWW
Re: Ayuda con Código "Simple en C" Hacer que solo se ingresen numeros
« Respuesta #1 en: 30 Diciembre 2011, 20:10 »

Añado "else", que significa si no se elige ninguna de las opcines anteriores.

Código
if (condición)
{
         //Código                  
}else {
      //código
     }


En línea

"Saber que se sabe lo que se sabe y que no se sabe lo que no se sabe, he aquí el verdadero saber."
(Confucio)

KuraraGNU

Desconectado Desconectado

Mensajes: 209



Ver Perfil
Re: Ayuda con Código "Simple en C" Hacer que solo se ingresen numeros
« Respuesta #2 en: 30 Diciembre 2011, 20:10 »

En vez de && tienes que usar or que supongo que será || no se c
En línea

ZedGe

Desconectado Desconectado

Mensajes: 111


Ver Perfil
Re: Ayuda con Código "Simple en C" Hacer que solo se ingresen numeros
« Respuesta #3 en: 30 Diciembre 2011, 20:12 »

 |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


Desconectado Desconectado

Mensajes: 405


Divide y vencerás


Ver Perfil WWW
Re: Ayuda con Código "Simple en C" Hacer que solo se ingresen numeros
« Respuesta #4 en: 30 Diciembre 2011, 20:14 »

|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

"Saber que se sabe lo que se sabe y que no se sabe lo que no se sabe, he aquí el verdadero saber."
(Confucio)

ZedGe

Desconectado Desconectado

Mensajes: 111


Ver Perfil
Re: Ayuda con Código "Simple en C" Hacer que solo se ingresen numeros
« Respuesta #5 en: 30 Diciembre 2011, 20:17 »

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 Desconectado

Mensajes: 209



Ver Perfil
Re: Ayuda con Código "Simple en C" Hacer que solo se ingresen numeros
« Respuesta #6 en: 30 Diciembre 2011, 20:20 »

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 Azn

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 por KuraraGNU » En línea

Caster


Desconectado Desconectado

Mensajes: 405


Divide y vencerás


Ver Perfil WWW
Re: Ayuda con Código "Simple en C" Hacer que solo se ingresen numeros
« Respuesta #7 en: 30 Diciembre 2011, 20:23 »

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:
Código
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 por |Demon| » En línea

"Saber que se sabe lo que se sabe y que no se sabe lo que no se sabe, he aquí el verdadero saber."
(Confucio)

ZedGe

Desconectado Desconectado

Mensajes: 111


Ver Perfil
Re: Ayuda con Código "Simple en C" Hacer que solo se ingresen numeros
« Respuesta #8 en: 30 Diciembre 2011, 20:23 »

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 Azn



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 Desconectado

Mensajes: 111


Ver Perfil
Re: Ayuda con Código "Simple en C" Hacer que solo se ingresen numeros
« Respuesta #9 en: 30 Diciembre 2011, 20:25 »

asi tengo el codigo

Código:
   
 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
KuraraGNU

Desconectado Desconectado

Mensajes: 209



Ver Perfil
Re: Ayuda con Código "Simple en C" Hacer que solo se ingresen numeros
« Respuesta #10 en: 30 Diciembre 2011, 20:28 »

asi tengo el codigo

Código:
 
 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.

Entonces tengo que ver el código entero, porque tiene pinta que lo que ocurre es que ese enter que presionas lo toma como entrada para el propio menu, que no se qué hace, creo que en c tienes que tener un recolector de basura, sino se queda lo que has escrito por teclado almacenado y siempre que haga falta que entres algo por teclado cojerá lo que ya has puesto, ¿es c o c++? Mira yo con solo esa parte no te puedo ayudar.
En línea

Caster


Desconectado Desconectado

Mensajes: 405


Divide y vencerás


Ver Perfil WWW
Re: Ayuda con Código "Simple en C" Hacer que solo se ingresen numeros
« Respuesta #11 en: 30 Diciembre 2011, 20:31 »

Citar
¿es c o c++?

Fíjate en el título del post

Déjanos el código completo por favor.

Saludos
En línea

"Saber que se sabe lo que se sabe y que no se sabe lo que no se sabe, he aquí el verdadero saber."
(Confucio)

ZedGe

Desconectado Desconectado

Mensajes: 111


Ver Perfil
Re: Ayuda con Código "Simple en C" Hacer que solo se ingresen numeros
« Respuesta #12 en: 30 Diciembre 2011, 20:32 »

El problema del codigo es que es demasiado no hara mucho spam? xD
como hago para ponerle barras al codigo para que esto no sea tan extenso?
En línea
Leyer


Desconectado Desconectado

Mensajes: 772


[]


Ver Perfil WWW
Re: Ayuda con Código "Simple en C" Hacer que solo se ingresen numeros
« Respuesta #13 en: 30 Diciembre 2011, 20:34 »

lee la opcion asi, luego la conviertes a entero

Código
char option[2];
printf("Opcion: ");
scanf("%s",option);
int opt=atoi(option);
if(opt>3&&opt>10||opt==0)printf("fuera");

PD: 2 paginas en esta boludes :xD
« Última modificación: 30 Diciembre 2011, 20:40 por Leyer » En línea

rir3760


Desconectado Desconectado

Mensajes: 382


Ver Perfil
Re: Ayuda con Código "Simple en C" Hacer que solo se ingresen numeros
« Respuesta #14 en: 30 Diciembre 2011, 20:35 »

Como ya te comentaron hay que revisar el código completo del programa. En cuanto a utilizar solo funciones parte de la biblioteca estándar de C un problema es el uso (en el fragmento de tu primer mensaje) de getch que no lo es (es parte de la biblioteca conio de Borland).

La operación se debe separar en tres partes: primero debes obtener la entrada, validar que sea un numero y por ultimo verificar que este en el rango valido (en tu caso 1 .. 3 o bien 10).

Un saludo
En línea

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines