elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C] Problema: funcion 'validar_numero()' siempre me retorna 1
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C] Problema: funcion 'validar_numero()' siempre me retorna 1  (Leído 1,830 veces)
krowa

Desconectado Desconectado

Mensajes: 21


Ver Perfil
[C] Problema: funcion 'validar_numero()' siempre me retorna 1
« en: 17 Septiembre 2015, 00:09 am »

[Consulta C]
Buenas!! ando con un problema seguramente no muy dificil de resolver pero despues de horas de programacion e investigacion ya nose que probar, de todas maneras voy a seguir intentando y si encuentro solucion la publico..

El problema:
La funcion "validar_numero()" retorna siempre 1!! Aunque ingrese -1, 15, 23, 123, asd,e3,2a, etc

Dejo parte del codigo y sus respectivas funciones:
-------------------------------------------------------------------
Código
  1. //[Codigo]
  2.  
  3. do{// ---------------------------------------------------------------CARGA ID
  4. if(c) printf("Ingreso un valor incorrecto, ingrese nuevamente\n");
  5. printf("\nIngrese Id del curso: ");
  6. //fflush(stdin);-----------------------NO USAR-> EN SU LUGAR USAR "lbuffer()" -> Funcion creada en este archivo.
  7. //scanf("%s",aux);
  8. fgets(aux,100,stdin);//fgets en este caso guarda lo que se ingresa del teclado ('stdin') en la cadena de caracteres 'aux'
  9. //con un maximo de 99 caracteres (100-1). Si se ingresan menos de 99 caracteres se agrega un '\n'
  10. if(aux[strlen(aux)-1]=='\n')aux[strlen(aux)-1]=='\0';//Si se agrega un \'n' lo "sacamos" poniendo en su lugar un '\0'
  11. lbuffer();//funcion que limpia buffer
  12. printf("\n Ingresaste: %s\n",aux);
  13. if(validar_numero(aux)==1)c=1;
  14. else c=0;
  15. }while(validar_numero(aux)==1);//Si la funcion retorna 1 > Ingreso un valor incorrecto
  16.  
  17. //Si sale del while > es correcto el valor ingresado (Es numero) > guardamos en archivo
  18. curso[i].id=atoi(aux); //atoi me convierte la cadena de caracteres a int
  19. // ---------------------------------------------------------------FIN CARGA ID
  20.  
  21.  
  22. //------------------------------------------------------------------------------
  23. //Dejo aca la funcion "validar_numero(char *n)" y "lbuffer()":
  24. //-------------------------------------------------------------------------------
  25.  
  26. int validar_numero(char *n){
  27. int largo=strlen(n), es_num=0, bien=0;
  28. for(int i=0;i<largo;i++){
  29. es_num=atoi(n+i); //atoi retorna 0 cuando NO es numero
  30. if(!es_num)return 1;
  31. }//for
  32. return 0;//Si la funcion llego hasta aca > SI es numero (Retornamos 0)
  33.  
  34. }
  35.  
  36. void lbuffer(){
  37. /* esta funcion 'lbuffer()' es para limpiar el buffer, no uso 'fflush(stdin)' por que no es correcto usarla, ademas de que trabajo en GNU/Linux (Debian) y "no funciona" */
  38. int d;
  39. while((d=getchar())!= '\n' && d != EOF);
  40. }
  41.  




« Última modificación: 17 Septiembre 2015, 00:22 am por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [C] Problema: funcion 'validar_numero()' siempre me retorna 1
« Respuesta #1 en: 17 Septiembre 2015, 00:36 am »

revisa que tipo de variable estás pasando y tus opciones de compilación, para mi funciona 100%

Código
  1. #include<iostream>
  2. #include <stdlib.h>  
  3. #include <string.h>  
  4. using namespace std;
  5. int validar_numero(char *n){
  6. int largo=strlen(n), es_num=0, bien=0;
  7. for(int i=0;i<largo;i++){
  8. es_num=atoi(n+i); //atoi retorna 0 cuando NO es numero
  9. if(!es_num)return 1;
  10. }//for
  11. return 0;//Si la funcion llego hasta aca > SI es numero (Retornamos 0)
  12.  
  13. }
  14.  
  15. int main()
  16. {
  17.    char n[11] = "-1a11";
  18.    int q = validar_numero(n);
  19.  
  20.    cout<<q<<endl;
  21.  
  22.    return 0;
  23. }


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con funcion retorna recordset
Programación Visual Basic
alone-in-the-chat 1 2,150 Último mensaje 1 Mayo 2006, 03:39 am
por alone-in-the-chat
Función que retorna dos tipos distintos de datos.
Programación C/C++
samur88 9 7,670 Último mensaje 18 Mayo 2011, 20:52 pm
por samur88
Función que retorna el valor de retorno de otra función
Programación C/C++
naderST 7 5,074 Último mensaje 7 Diciembre 2011, 23:45 pm
por naderST
Diferencias entre funcion que retorna y no retorna.
Programación C/C++
FKT 7 4,293 Último mensaje 21 Agosto 2015, 00:31 am
por FKT
[Pregunta]: .offset retorna 0 siempre.
Desarrollo Web
Leguim 4 2,883 Último mensaje 21 Septiembre 2020, 04:33 am
por EdePC
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines