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

Solo lee numeros y no letras en C

Estas en el tema de Solo lee numeros y no letras en C en el foro de C/C++ en Foros del Web. Este codigo en c# valida en tiempo real el ingreso de numeros. en el codigo esta explicado como funciona, le faltarian algunos detalles pero funciona ...
  #1 (permalink)  
Antiguo 02/01/2015, 12:14
 
Fecha de Ingreso: enero-2015
Mensajes: 3
Antigüedad: 9 años, 11 meses
Puntos: 0
Solo lee numeros y no letras en C

Este codigo en c# valida en tiempo real el ingreso de numeros.
en el codigo esta explicado como funciona, le faltarian algunos detalles pero funciona bien para aquellos que neseciten una carga en c


Código C:
Ver original
  1. #include <stdio.h>  /*  Archivo que contiene la definción de funciones que trabajan con entradas y salidas.
  2.                       para que funcione  getchar */
  3. #include <string.h> /* Archivo que contiene la definción de funciones que trabajan con caracteres.*/
  4.  
  5. int valida_numeros(int,int); // aca inicializo la funcion que retorna un int
  6.  
  7. main()
  8. {int numero;
  9. numero=valida_numeros(8,4); // el primero 8 es el maximo que se puede ingresar, el 4 es lo minimo a ingresar
  10.  
  11. printf(" \n \n El numero ingresado es %d ",numero);
  12. }
  13.  
  14. int valida_numeros(int longitud, int tamanio){ // longitud es maximo largo a ingresar el tamanio es lo minimo a ingresar
  15. char c;
  16. int i,num,d=0,b=0,f=0;
  17.     long int m=1;
  18.     char nu[longitud]; //si o si hay que declarar un char el cual se le agrega la lomgitud de caracteres a almacenar como maximo
  19.     printf("\r\n Ingrese mas de %d dijitos \n",tamanio);
  20. do{
  21.     while(c != 13 ) // un while hasta que se aprete la tecla enter en ascii es 13
  22.     {c=getch();        // el getch captura la teclas que han sido presionadas en funcion ascii
  23.        if(c == 0 )
  24.            c = getch();
  25.        else
  26.           if(c>47 && c<58 && b<longitud || c==8) // aca se reconoce en ascii si se preciono del 0 al 9
  27.           {
  28. printf("%c",c);
  29.         switch(c){  // si se preciono algun numero este se almacena en el array char y b abansa cada ves uno.
  30.         case 48:{num=0; b=b+1; nu[b]=num;break;}
  31.         case 49:{num=1; b=b+1; nu[b]=num;break;}
  32.         case 50:{num=2; b=b+1; nu[b]=num;break;}
  33.         case 51:{num=3; b=b+1; nu[b]=num;break;}
  34.         case 52:{num=4; b=b+1; nu[b]=num;break;}
  35.         case 53:{num=5; b=b+1; nu[b]=num;break;}
  36.         case 54:{num=6; b=b+1; nu[b]=num;break;}
  37.         case 55:{num=7; b=b+1; nu[b]=num;break;}
  38.         case 56:{num=8; b=b+1; nu[b]=num;break;}
  39.         case 57:{num=9; b=b+1; nu[b]=num;break;}
  40.         case 8:{ // si se preciona la tecla borrar que es 8 en ascii primero verifica que elcontador b no este en 0
  41.  
  42.             if(b>0){
  43.              b=b-1;       // si b es mayor que 0 le resta uno y solo cuenta hasta el ultimo numero
  44.             system("cls");
  45.             printf("\r\n Ingrese %d dijitos minimo \n",tamanio);
  46.     for(i=1;i<=b;i=i+1)
  47.         {
  48.     printf("%d",nu[i]); // este for es para que reimprima todos los numero esepto el ultimo ingresado si fue borrado
  49.  
  50.        }}
  51.        break;}
  52.  
  53.             } }
  54.     }// fin while
  55.  
  56. if (b<tamanio) // este verifica al apretar enter si se ingreso la cantidad minima requerida
  57. { system("cls");
  58.     printf("\n Debe ingresar mas de %d dijitos \n",tamanio);
  59. c=1;
  60. {for(i=1;i<=b;i=i+1)
  61. {
  62.     if(nu[i]>0){
  63.     printf("%d",nu[i]);
  64.     } // hace que C lo limpie
  65.  
  66.     }}}
  67.  
  68. }while(b<tamanio);//fin while otro
  69. for(i=1;i<=b;i=i+1)
  70. {
  71.     d=d*m+nu[i]; // este for almacena los datos ingresados en char array y los transfiere
  72.     m=10;
  73. }
  74. //printf(" lo final de contenido c %d \n",d);
  75. return d; // aca regresa d que contiene el numero ingresado
  76.     }

Última edición por razpeitia; 14/01/2015 a las 09:06 Razón: detalles
  #2 (permalink)  
Antiguo 02/01/2015, 16:05
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 2 meses
Puntos: 38
Respuesta: Solo lee numeros y no letras en C

¿Es un aporte, o hay algún problema?
  #3 (permalink)  
Antiguo 13/01/2015, 17:11
 
Fecha de Ingreso: enero-2015
Mensajes: 8
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Solo lee numeros y no letras en C

Supongo que es un aporte.

Etiquetas: char, funcion, int, lee, letras, numero, numeros, string
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 01:25.