JavaScript - Pequeño programa de reconocimiento de edad

   
Vista:
Imágen de perfil de Kevin

Pequeño programa de reconocimiento de edad

Publicado por Kevin (2 intervenciones) el 15/08/2015 05:39:32
Buenas Amigos.

Estoy comenzando en el campo de la programación y por ahora llevo un comienzo pésimo, tengo un problema que para muchos de ustedes es lo sencillo del mundo, pero para mi es un problema bastante grande. Pasa y acontece que necesito un elaborar un código en JavasScript que me diga que edad tengo

Con mi Lógica nula elabore lo siguiente pero tiene serias fallas.
No me he guiado de nada para hacerlo se que en Internet habrán muchos ademas de mejor estructurados y sin fallas pero quería ver hasta donde podía llegar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE html>
<html lang="es-ES">
<head>
	<meta charset="UTF-8">
</head>
<body>
	<h1>Tu Edad es</h1>
				<br />
	<script type="text/javascript">
 
	var anoi = prompt("en que año estamos")
	var anio = prompt("En que año Nacistes")
	var cum = prompt("Cumpliestes en este año")
	var art = anoi - anio ;
	var art1 = parseInt(art - 1)
 
	if (cum == "si" ) {document.write(art) };
	if (cum == "no") {document.write(art1)} ;
 	if (cum != "si" || cum != "no" ) {document.write("No respondiste bien");};
 
 
	</script>
</body>
 
</html>

Muchos se habrán dado cuenta que sucede.
Pasa y acontece que cuando sale la primer ventana dígito: 2015
en la segunda ventana dígito: 1996
en la tercera dígito : si. (yo se que hay un menú que pregunta si y no pero no se cual es )

y me da como resultado 21 que es la resta de anoi y anio. pero también añade el "No respondiste bien"
al igual si coloco en la tercera ventana no.

pero si coloco cualquier cosa va directo al mensaje "No respondiste bien". (Es lo unico que esta mas o menos bien)

Pensé en la solución y la estructure de otra forma pero a la hora de la verdad no supe como definir.
lo que quiero es que si dígito "si" o "no" solo me salga el resultado.

Espero Hacerme Entender con Todo Esto.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Vainas

Pequeño programa de reconocimiento de edad

Publicado por Vainas (239 intervenciones) el 15/08/2015 11:45:34
Buenas:

Es solo leer lo que tu mismo has puesto:

Si cum es igual a "si" escribe esto:
if (cum == "si" ) {document.write(art) };

Si cum es igual a "no" escribe esto:
if (cum == "no") {document.write(art1)} ;

Si cum es diferente de "si" O es diferente de "no" escribe esto:
if (cum != "si" || cum != "no" ) {document.write("No respondiste bien");};

La ultima linea cuando cum="si" quedara asi if( "si" != "si" || "si" != "no")

el primero da false y el segundo da verdad:

if ( false || verdad)

La regla dice que OR

false false es false
false verdad es verdad
verdad false es verdad
verdad verdad es verdad

asi que aunque uno u otro te de false si el otro es verdad esa sentencia siempre sera verdad.

Ahora le pregunta es. Que quieres hacer? Cuando quieres que se muestre el mensaje "no respondiste bien"

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Kevin

Pequeño programa de reconocimiento de edad

Publicado por Kevin (2 intervenciones) el 16/08/2015 06:27:40
Amigo Gracias. ya iba a desanimarme a la primera.
Ya logre solucionarlo. lo diseñe de esta manera cambiando los nombres a las variables (espero y sea fácil hacerme entender posible) :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<html lang="es-ES">
<head>
	<meta charset="UTF-8">
</head>
<body>
	<h1>Te Decimos Que Edad Tienes</h1>
				<br />
 
	<script type="text/javascript">
 
	var question1 = prompt( "Pregunta #1 ¿En que año estamos?" )
	var question2 = prompt( "Pregunta #2 ¿En que año Nacistes?" )
	var question3 = prompt( "Pregunta #3 ¿Cumpliestes en este año?" )
	var si_cum = question1 - question2 ;
	var no_cum = parseInt( si_cum - 1)
 
	if ( question3 == "si" || question3 == "no") {
	 	if ( question3 == "si" ) {document.write( "Tienes " + si_cum + " Años" )} ;
	 	if ( question3 == "no" ) {document.write( "Tienes " + no_cum + " Años" )} ;
	 	 } else {document.write( "No Respondistes Bien la Pregunta Numero 3" )}
 
	</script>
</body>
 
</html>

lo que queria era que al responder la tercera pregunta que es la variable:
var question3 = prompt( "Pregunta #3 ¿Cumpliestes en este año?" )

y Colocara "si" se dirigiera de inmediato al if:
if ( question3 == "si" || question3 == "no") {
if ( question3 == "si" ) {document.write( "Tienes " + si_cum + " Años" )} ;

ya Que cumple la primera condición y luego la primera de esa condición.

y cuando respondiera a la pregunta #3 que "no" entonces fuera al if:
1
2
3
if ( question3 == "si" || question3 == "no") {
	 	if ( question3 == "si" ) {document.write( "Tienes " + si_cum + " Años" )} ;
	 	if ( question3 == "no" ) {document.write( "Tienes " + no_cum + " Años" )} ;

ya que cumple la primera condición, y luego la segunda de esa condición.

y lo del mensaje de "no respondistes bien" queria que saliera cuando en la tercera pregunta colocara otra cosa en vez de "si" o "no". entonces se dirigiría de inmediato al else:
else {document.write( "No Respondistes Bien la Pregunta Numero 3" )}

Se que le pueden faltar mas cosas pero por ahora me siento satisfecho...
Gracias Por Tu Ayuda. Saludos igualmente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas

Pequeño programa de reconocimiento de edad

Publicado por Vainas (239 intervenciones) el 16/08/2015 10:54:29
Buenas:

Ahora si que te ha salido mejor. Para que se entienda mejor lo normal es que cuando tabules lo hagas respetando un poco el orden asi:

1
2
3
4
5
if ( question3 == "si" || question3 == "no") {
	if ( question3 == "si" ) {document.write( "Tienes " + si_cum + " Años" ); /*este punto y coma si es necesario*/} ; // este punto y coma no es necesario aqui
	if ( question3 == "no" ) {document.write( "Tienes " + no_cum + " Años" ); /*este punto y coma si es necesario*/} ; // este punto y coma no es necesario aqui
} else {document.write( "No Respondistes Bien la Pregunta Numero 3" ); /*este punto y coma si es necesario*/}
// Este else esta alineado con el primer if para hacer notar que corresponde a el.


Si question3 es diferente a "si" o a "no" entonces false OR false es igual a false con lo que entrara en el else.

Ahora mi solucion:

Una sentencia if...else if...else: http://www.w3schools.com/js/js_if_else.asp (busca donde pone "else if Statement")

if ( question3 == "si" ) {
document.write( "Tienes " + si_cum + " Años" );
} else if ( question3 == "no" ){
document.write( "Tienes " + no_cum + " Años" );
} else {
document.write( "No Respondistes Bien la Pregunta Numero 3" );
}

Si responde "si" le damos una respuesta... si ha puesto "no" le damos otra.... si pone algo fuera de esto le dejamos el ultimo mensaje.

Ahora mas cosas:

parseIntlo puedes usar para que al entrar los valores del usuario pasen a ser enteros (javascript no es tan estricto en este aspecto pero puede que te de problemas sino:

1
2
3
4
5
6
var question1 = prompt( "Pregunta #1 ¿En que año estamos?" );
question1 = parseInt(question1);
var question2 = prompt( "Pregunta #2 ¿En que año Nacistes?" );
question2 = parseInt(question2);
var question3 = prompt( "Pregunta #3 ¿Cumpliestes en este año?" );
question3 = parseInt(question3);


Asi cuando hagas tus calculos no lo necesitaras.

1
2
var si_cum = question1 - question2 ;
var no_cum = si_cum - 1; // siempre punto y coma despues de una sentencia


Sigue asi!!!!. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar