Autor
|
Tema: como hacer para introducir solo numeros (Leído 27,065 veces)
|
Komodo
Desconectado
Mensajes: 352
|
Tengo un programa y tengo que mostrar un mensaje de error si introduzco algo que no sea un numero..¿cómo lo podría hacer?
Gracia.s
|
|
|
En línea
|
|
|
|
16BITBoy
Desconectado
Mensajes: 137
En mi pompa..
|
hmm si lo hacemos en C...
Yo guardaría una cadena de caracteres de lo que introduzca el usuario. Luego veo 2 problemas a resolver, saber si todos los caracteres son números, y convertir un numero escrito en una cadena de caracteres en un tipo numérico tal como int o float.
Para lo primero: Guardo una cadena de caracteres de lo que introduzca el usuario. Luego caracter a caracter miro si este es un número o no. Si alguno de los caracteres no es un número, termino el bucle diciéndolo y me salgo de esta función. En caso de que todos los caracteres fuesen números comenzaría la conversión de cadena de caracteres a el tipo de formato deseado.
Y para lo segundo, no se si me equivocaré por que no lo tengo muy fresco: Voy y compruebo la longitúd de esa cadena de caracteres, entonces sumo en una nueva variable el valor que da sabiendo el numero que leo y la cantidad de ceros en función de caracteres que me quedan.
Perdona que no ponga el código, es que estoy espesito ahora mismo xDDD pero espero que esto te haya dado una buena idea.
|
|
|
En línea
|
Blog personal: http://www.16bitboy.com/blog- Que horrible pesadilla, unos y ceros por todas partes... hasta me parecio ver un ¡dos! - Bender, solo fue una pesadilla, no existe eso que llamas "dos".
|
|
|
Dreamaker
Desconectado
Mensajes: 277
|
Podrías hacer que si el Val() del número es igual a "0" entonces que ingrese otro valor (el val() de una cadena de caracteres o cualquier otra cosa que no sea un numero es 0) Ejemplo:Si Val(Numero)=0 entonces Mostrar("Error, sólo estan permitidos números") Fin si Espero que se entienda, no sé C/C++ pero esa es la idea, pasalo a la sintaxis de C/C++ y ya me cuentas si te funciona Es más rápido que andar recorriendo a ver si es un número o no
|
|
|
En línea
|
|
|
|
16BITBoy
Desconectado
Mensajes: 137
En mi pompa..
|
La cuestión es que no siempre hay esa función "Val()" imaginaria que expones. En php juraria que la hay, en python la hay, en vb no lo se pero apuesto a que si. En C acabo de mirar ( ya que me preguntaba sobre una posible función ya hecha) y hay una función parecida pero de más bajo nivel que ahorraría programar las 2 funciones que dije antes. strtol() http://www.elook.org/programming/c/strtol.htmlCuando hice el algoritmo así escrito sin código en el anterior mensaje, lo hice suponiendo que no había en las librerias C estandar una función de alto nivel que hiciese esta tarea tal y como lo hacemos en otros lenguajes. Contando con que komodo preguntaba el método, asumí que no la había.
|
|
|
En línea
|
Blog personal: http://www.16bitboy.com/blog- Que horrible pesadilla, unos y ceros por todas partes... hasta me parecio ver un ¡dos! - Bender, solo fue una pesadilla, no existe eso que llamas "dos".
|
|
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
Yo tengo otro método, hasta hice el código : #include <stdio.h> #include <string.h> int main() { char string[10]; char *ptr = string; if(*ptr >= 48 && *ptr <= 57) printf("Has introducido: %s", string ); else printf("No has introducido un n%cmero.", 163); return 0; }
Lo que hago es introducir caracteres, sean letras, números... y mediante la tabla ASCII comprobar si he introducido un número. Saludos
|
|
« Última modificación: 15 Octubre 2010, 22:50 pm por Horricreu »
|
En línea
|
|
|
|
Komodo
Desconectado
Mensajes: 352
|
El caso Horricreu es que debe poder ingresar numeros comprendidos entre el 1 y el 99999(doy a entender que el user pone el limite)
En VB6 me suena de haberlo hecho alguna vez..pero claro..
|
|
|
En línea
|
|
|
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
|
|
|
En línea
|
|
|
|
[Zero]
Wiki
Desconectado
Mensajes: 1.082
CALL DWORD PTR DS:[0]
|
Con comprobar uno a uno es suficiente: bool IsNumber(char* szString) { //Recorremos todos los caracteres y comprobamos que cada uno sea un número for(unsigned int i=0;i<strlen(szString);i++) { if(!(szString[i]>='0' && szString[i]<='9')) return false; } return true; }
Saludos
|
|
|
En línea
|
“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza. Nietzsche
|
|
|
Komodo
Desconectado
Mensajes: 352
|
Bueno lo de isdigit() y la función que me has puesto Zero es exactamente lo mismo, lo único que hay que hacer es en vez de introducir números introducir esos números en una cadena..lo pruebo os pongo el ejemplo y os digo si he tenido errores. Muchas gracias a 16bitboy, horricreu y Zero. Lh: No hagas doble post, utiliza el botón modificar. La próxima borro directamente.bool IsNumber(char* szString) { //Recorremos todos los caracteres y comprobamos que cada uno sea un número for(unsigned int i=0;i<strlen(szString);i++) { if(!(szString[i]>='0' && szString[i]<='9')) return false; } return true; }
int main(){ char fecha[4]; printf("Introduce la fecha de nacimiento(4 digitos): "); scanf("%s",fecha); if(IsNumber(fecha)==1){ printf("\nNaciste: %i",atoi(fecha)); } else{ printf("\nError, no has introducido numeros"); } return 0; } Lo he usado en mi code y lo he implementado de un modo parecido a este Gracias de nuevo
|
|
« Última modificación: 12 Septiembre 2010, 21:53 pm por Littlehorse »
|
En línea
|
|
|
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
Haces exactamente lo mismo con la función que te dí y además te ahorras bastante código. Saludos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Como hacer para que muestre numeros aleatoreos y tengo q resolver la suma
Programación Visual Basic
|
manu4561
|
3
|
2,982
|
4 Julio 2012, 12:25 pm
por noele1995
|
|
|
como validar jtxtbox para que acepte solo números!
Java
|
washington8277
|
7
|
7,141
|
29 Octubre 2012, 15:33 pm
por ChavalChavito
|
|
|
While de numeros hasta introducir uno más pequeño
Programación C/C++
|
sora_ori
|
5
|
2,828
|
19 Noviembre 2013, 20:22 pm
por sora_ori
|
|
|
introducir n numeros reales en c
Programación C/C++
|
lili00
|
2
|
2,206
|
13 Marzo 2018, 05:37 am
por dariodr01
|
|
|
Así es como Egipto no solo censuró Internet, sino que aprovechó para hacer ...
Noticias
|
wolfbcn
|
0
|
1,123
|
4 Julio 2018, 02:02 am
por wolfbcn
|
|