Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: carlosabcs18 en 9 Julio 2014, 05:12 am



Título: FUNCION PARA VALIDAR EDAD
Publicado por: carlosabcs18 en 9 Julio 2014, 05:12 am
Necesito una función que valide una edad entre 8 a 11 años, y que rechace numeros decimales, negativos, etc.
Alguien tendra el codigo? Porque cada vez que lo intento no compila como debe ser, aca les dejo lo que yo hice

Código
  1. int validare(int e)
  2. {
  3. int rpt;
  4. if(e-int(e)==0)
  5. {
  6. if(e<8||e>11)
  7. {
  8. cout<<"Este software no es adecuado para tu edad, para solucionar tu problema ingresa a http://www.spammmmmm.com";
  9. return 1;
  10. }
  11. else
  12. return 0;
  13. }
  14. else
  15. {
  16. cout<<"Tu edad no puede ser un numero decimal, intentalo denuevo";
  17. return 1;
  18. }


Título: Re: FUNCION PARA VALIDAR EDAD
Publicado por: engel lex en 9 Julio 2014, 05:22 am
1- quita el link del cout, es spam
2- usa etiquetas GeSHi para el codigo
modifica el tema y corrije esas 2 cosas

el código estoy seguro que compila como debe ser, es muy dudoso que tengas un error en el compilador... lo único que te digo es que "e" está definido como int, un "int"(entero) jamás tendrá decimales (por eso es entero), modifica el código y estoy por seguro que terminamos de resolver


Título: Re: FUNCION PARA VALIDAR EDAD
Publicado por: leosansan en 9 Julio 2014, 15:59 pm
Necesito una función que valide una edad entre 8 a 11 años, y que rechace numeros decimales, negativos, etc.
.........................

También tendría que rechazar el que entren letras en lugar de números.

Para ello lo mejor es que en main, o en la función que corresponda, se ingrese la variable "e", que yo llamaré edad, no cuesta tanto y es más significativa, como decía que se ingrese dicha variable como un array tipo char, ej::char  edad_char[10] y ya la función validare se encargará de validar la entrada. Por supuesto rechazo edades superiores a 99, ¿o no? :laugh:

Y la función validare sería, y es sólo una sugerencia, algo como esto:

EI: codigo removido.

¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: Re: FUNCION PARA VALIDAR EDAD
Publicado por: engel lex en 9 Julio 2014, 18:09 pm
Leosansan si ya te han eliminado código antes, por que sigues haciendolo? :s puedes responder en pseudo o explicando, no es necesario (y va contra las reglas) resolverlo -.-


Título: Re: Re: FUNCION PARA VALIDAR EDAD
Publicado por: leosansan en 9 Julio 2014, 19:29 pm
Leosansan si ya te han eliminado código antes, por que sigues haciendolo? :s puedes responder en pseudo o explicando, no es necesario (y va contra las reglas) resolverlo -.-

Gracias amigo engel lex por recordarmelo, aunque ya se encarga E.I de hacerlo si me despisto. Sorry!.

En este caso se trataba de que en la función validare, con lo indicado en mi anterior mensaje, se valide la cadena de entrada que representará la edad como un int y, por tratarse de la edad, de valor no superior a 100, que no está nada mal. ;)

Por lo tanto un paso sería algo como esto:

Código
  1. ................
  2.  if ( edad_char[i] < '0' ||  edad_char[i] > '9' || lon > 2 )
  3. ...............................

donde lon representa la longitud de la cadena que se calcula bien con strlen, incluyendo entonces la librería string.h, o bien sin ella calculándola como:

Código
  1. for ( lon = 0 ; edad_char[lon] ;

Y si la cadena que representa la edad es efectivamente un int menor que 100, se trata de pasarlo de cadena a int, algo como:

Código
  1. for (int i = 0; edad_char[i] ; i++)
  2.    edad = edad * 10 + ( edad_char[i] - '0' );

Y ya , tampoco era para tanto, creo yo.

Espero no haberme pasado esta vez.  :silbar:

¡¡¡¡ Saluditos! ..... !!!!


*****
\. ./
  |
 (-)



Título: Re: FUNCION PARA VALIDAR EDAD
Publicado por: Miseryk en 16 Julio 2014, 22:28 pm
Código
  1. int main()
  2. {
  3. int edad;
  4.  
  5. cout << "Edad: >" << endl;
  6.  
  7. cin >> edad;
  8.  
  9. bool asd = edad < 8 || edad > 11 ? false : true;
  10.  
  11. if (!asd)
  12. {
  13. cout << "Este software no es adecuado para tu edad, para solucionar tu problema ingresa a http://www.spammmmmm.com" << endl;
  14. }
  15.  
  16. system("pause");
  17.  
  18. return 0;
  19. }
  20.  

Ésto repercute en la lógica más que nada, si vos ponés, cuánto es 1 + 1 y como resultado tenés "pepe" patealo, pero ese es el iif de vb6, además, si no sabe escribir un número, de por sí ya es obvio que ese software no es adecuado para su edad, aunque creo que un chico/a entre 8 a 11 entendería mejor la consigna y no querría romper el sistema  :silbar:


Título: Re: FUNCION PARA VALIDAR EDAD
Publicado por: leosansan en 16 Julio 2014, 22:59 pm
Muy bueno lo del bool Miseryk, pero el tema era:

Necesito una función que valide una edad entre 8 a 11 años, y que rechace numeros decimales, negativos, etc.

....o letras y tu código valida presuponiendo que la entrada es un entero.  ;)... y no es una crítica, sólo una observación.

En realidad tu propuesta es equivalente a:

Código
  1. ******************
  2. int edad;
  3.  
  4. cout << "Edad: >" << endl;
  5.  
  6. cin >> edad;
  7.  
  8. if (edad < 8 || edad > 11 )
  9. {
  10. cout << "Este software no es adecuado para tu edad, para solucionar tu problema ingresa a http://www.spammmmmm.com" << endl;
  11. }
  12. *******************************

Por lo que te podrías ahorrar el bool asd y, como ya comenté, queda pendiente la validación indicada por el autor del tema.

¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)