• Domingo 15 de Diciembre de 2024, 19:44

Autor Tema:  Leer Solo Números O Solo Letras  (Leído 2512 veces)

kike_monarcas

  • Miembro activo
  • **
  • Mensajes: 41
    • Ver Perfil
Leer Solo Números O Solo Letras
« en: Martes 5 de Abril de 2005, 22:55 »
0
Hola que tal. Tengo una duda en lenguaje C. ¿Alguien podria decirme como leer solo números desde el teclado?  :unsure:

Tengo un método pero no me funciona:

#include <conio.h>
#include <stdio.h>

void main (){
    int edad;
    printf("Edad: ");
    scanf("%[0-9]d",&edad);    // Aqui mi duda
}


Por ahi escuche de unas funciones que activan y desactivan la parte numérica y alfanumérica del teclado pero no he podido encontrar  nada. Espero que me puedan ayudar y se los agradezco por anticipado. Saludos  :hola:

fuhrer

  • Miembro MUY activo
  • ***
  • Mensajes: 329
  • Nacionalidad: mx
    • Ver Perfil
    • http://admin.busquenoseninternet.com
Re: Leer Solo Números O Solo Letras
« Respuesta #1 en: Martes 5 de Abril de 2005, 23:21 »
0
Hola que tal.

Yo te recomiendo que utilices la función atoi, la cual te lee un texto y te lo convierte a número, si existe un error no te convierte nada, esto lo puedes hacer dentro de un ciclo hasta que te den numeros.

Espero te sirva.

Hasta luego.

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Leer Solo Números O Solo Letras
« Respuesta #2 en: Miércoles 6 de Abril de 2005, 01:35 »
0
Tambien puedes usar IF y los valores hexadecimales de los numeros los cuales son corridos.. entonces le dices si el valor introducido es mayor o menor a los valores de los numeros le pides que introdusca valores reales. Saludos
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

ErWillem

  • Miembro activo
  • **
  • Mensajes: 55
    • Ver Perfil
Re: Leer Solo Números O Solo Letras
« Respuesta #3 en: Miércoles 6 de Abril de 2005, 04:19 »
0
Ya sabes utilizar la librería conio.h una buena manera sería crear una función propia que permita ingresar únicamente número utilizando getch().

Puedes leer el valor de la tecla y validar que se encuentre entre '0' y '9', los que cumplan la condición los guardas en un arreglo de caracteres (cadena) y luego utilizas la función atoi :rolleyes:. Si trabajas con decimales se te complicará un poquito más el codigo pero con enteros sería muy facil.

Si eres bueno en matemáticas puedes hacerlo incluso directamente sobre una variable haciendo calculos en lugar de guardarlos en un arreglo :comp:, pero eso depende de tu capacidad y de que tanto sepas manejar el lenguaje.

Espero te sirva de algo mi ayuda :hola:.
Enlace a mis programas realizados durante mis estudios.
--------------------------------------------------------------
Si la vida te da limones, pide sal y tequila.

La fe mueve montañas, pero hay que pagar.

El ser humano es el unico que tropieza dos veces con la misma piedra.

rir3760

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
Re: Leer Solo Números O Solo Letras
« Respuesta #4 en: Miércoles 6 de Abril de 2005, 17:05 »
0
Para validar que una cadena pueda convertirse en un numero de tipo long, unsigned long y double lo mejor es utilizar las funciones strtol, strtoul y strtod (stdlib.h).

Por ejemplo para verificar si una cadena de texto puede convertirse (o no) en un numero de tipo long:

Código: Text
  1. #include &#60;stdio.h&#62;
  2. #include &#60;string.h&#62;
  3. #include &#60;errno.h&#62;
  4. #include &#60;limits.h&#62;
  5. #include &#60;stdlib.h&#62;
  6.  
  7. #define LONG_CADENA 256
  8.  
  9. int main(int argc, char *argv[])
  10. {
  11.    char cadena[LONG_CADENA];
  12.    char *pac;
  13.    long numero;
  14.    
  15.    /* leer cadena de la entrada estandard */
  16.    printf(&#34;Introduce un numero entero: &#34;);
  17.    fflush(stdout);
  18.    fgets(cadena, LONG_CADENA, stdin);
  19.    
  20.    /* eliminar '&#092;n' si existe */
  21.    if ((pac = strchr(cadena, '&#092;n')) != NULL)
  22.       *pac = '&#092;0';
  23.    
  24.    if (cadena[0] == '&#092;0'){
  25.       puts(&#34;Error: la longitud de la cadena es 0&#34;);
  26.       return EXIT_FAILURE;
  27.    }
  28.    
  29.    numero = strtol(cadena, &pac, 10);
  30.    
  31.    if (numero == 0 && pac == cadena){
  32.       puts(&#34;Error: la cadena no puede convertirse al tipo signed long&#34;);
  33.       return EXIT_FAILURE;
  34.    }
  35.    
  36.    if (errno == ERANGE && (numero == LONG_MAX || numero == LONG_MIN)){
  37.       puts(&#34;Error: numero fuera del rango valido para el tipo signed long&#34;);
  38.       return EXIT_FAILURE;
  39.    }
  40.    
  41.    if (*pac != '&#092;0'){
  42.       printf(&#34;Error: caracteres no validos al final de la cadena: &#34;);
  43.       printf(&#34;&#092;&#34;%s&#092;&#34;&#092;n&#34;, pac);
  44.       return EXIT_FAILURE;
  45.    }
  46.    
  47.    printf(&#34;El numero %ld es valido&#092;n&#34;, numero);
  48.    
  49.    return EXIT_SUCCESS;
  50. }
  51.  

Un saludo
The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice. -- Rebec of Ginaz

kike_monarcas

  • Miembro activo
  • **
  • Mensajes: 41
    • Ver Perfil
Re: Leer Solo Números O Solo Letras
« Respuesta #5 en: Miércoles 13 de Abril de 2005, 00:14 »
0
Gracias por sus comentarios. Su ayuda me ha servido de mucho.  Ya he resuelto mi duda.

Muchas gracias  :kicking:  :D