FUNCION PARA VALIDAR EDAD

Iniciado por carlosabcs18, 9 Julio 2014, 05:12 AM

0 Miembros y 2 Visitantes están viendo este tema.

carlosabcs18

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

int validare(int e)
{
int rpt;
if(e-int(e)==0)
{
if(e<8||e>11)
{
cout<<"Este software no es adecuado para tu edad, para solucionar tu problema ingresa a http://www.spammmmmm.com";
return 1;
}
else
return 0;
}
else
{
cout<<"Tu edad no puede ser un numero decimal, intentalo denuevo";
return 1;
}

engel lex

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
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.

leosansan

#2
Cita de: 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.
.........................

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! ..... !!!!



engel lex

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 -.-
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.

leosansan

Cita de: 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 -.-

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 (cpp) [Seleccionar]
................
  if ( edad_char[i] < '0' ||  edad_char[i] > '9' || lon > 2 )
...............................


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 (cpp) [Seleccionar]
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 (cpp) [Seleccionar]
for (int i = 0; edad_char[i] ; i++)
    edad = edad * 10 + ( edad_char[i] - '0' );


Y ya , tampoco era para tanto, creo yo.

Espero no haberme pasado esta vez.  :silbar:

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



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


Miseryk

Código (cpp) [Seleccionar]

int main()
{
int edad;

cout << "Edad: >" << endl;

cin >> edad;

bool asd = edad < 8 || edad > 11 ? false : true;

if (!asd)
{
cout << "Este software no es adecuado para tu edad, para solucionar tu problema ingresa a http://www.spammmmmm.com" << endl;
}

system("pause");

return 0;
}


É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:
Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It's never too late to change our luck
So, don't let them steal your light
Don't let them break your stride
There is light on the other side
And you'll see all the raindrops falling behind
Make it out tonight
it's a revolution

CL!!!

leosansan

#6
Muy bueno lo del bool Miseryk, pero el tema era:

Cita de: 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.

....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 (cpp) [Seleccionar]
******************
int edad;

cout << "Edad: >" << endl;

cin >> edad;

if (edad < 8 || edad > 11 )
{
cout << "Este software no es adecuado para tu edad, para solucionar tu problema ingresa a http://www.spammmmmm.com" << endl;
}
*******************************


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! ..... !!!!