Autor Tema: JavaScript convertir datos a valor numérico recorrer array con for in CU01135E  (Leído 6666 veces)

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Posible solución del ejercicio CU01135E del curso JavaScript desde cero.

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Curso JavaScript</title>
<script type="text/javascript">
function sumar(){
var msg='Multiplicamos por 5 los números introducidos:\n';
var Numero=[], Cardenal=['primer','segundo','tercer','cuarto','quinto'];
alert('A continuación introduce 5 números.')
for(j=0;j<5;j++){
Numero[j]=prompt('Estás introduciendo el '+Cardenal[j]);
}
for(i in Numero){
msg=msg+Numero[i]+'*5='+Numero[i]*5+'         ';
}
alert(msg);
}
</script>
</head>
<body onload="sumar()">
</body>
</html>

Gracias.
« Última modificación: 08 de Febrero 2016, 09:21 por Ogramar »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:CU01135E JavaScript for in
« Respuesta #1 en: 05 de Febrero 2016, 20:22 »
Hola dimiste.

El ejercicio dice que los datos se conviertan a valor numérico.

Según tienes el código ahora, si quisiéramos sumar los números en vez de multiplicarlos el resultado sería algo así:
Si introducimos 1, 2, 3, 4 y 5. Y esta línea quedara así:

Código: [Seleccionar]
msg=msg+Numero[i]+'*5='+Numero[i]+5+'         ';
El resultado sería:
1+5=15, 2+5=25, 3+5=35, 4+5=45, 5+5=55...


Saludos.
 

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas, Pedro.

Tienes razón. ¿Y cómo lo podría convertir los arrays en números? Añadí la línea:

Código: [Seleccionar]
Numero=Number;
es decir, el código de la función me quedó así:

Código: [Seleccionar]
<script type="text/javascript">
function sumar(){
var msg='Multiplicamos por 5 los números introducidos:\n';
var Numero=[], Cardenal=['primer','segundo','tercer','cuarto','quinto'];
Numero=Number;
alert('A continuación introduce 5 números.')
for(j=0;j<5;j++){
Numero[j]=prompt('Estás introduciendo el '+Cardenal[j]);
}
for(i in Numero){
msg=msg+Numero[i]+'+5='+Numero[i]+5+'         ';
}
alert(msg);
}
</script>

pero tampoco consigo que se sumaran bien.

En el ejercicio CU01116E lo hice de la misma manera y funciono. No entiendo dónde me estoy equivocando. Es verdad que en dicho ejerecicio (CU01116E) no utilizabamos arrays. ¿Vendrá de allí mi lio?

Adjunto también el código del ejerecicio CU01116E para que veáis a lo que me refiero.

Código del ejerecicio CU01116E:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Portal web</title>
<script type="text/javascript">
function mostrarMensaje1(){
var result3, a, b;
a=Number(prompt("Introduzca un número, por favor:"));
b=Number(prompt("Ahora otro, por favor:"));
result1=a%5;
alert("El resto (módulo) de dividir "+a+" entre 5 es: "+result1);//Muestra el resto (módulo) de dividir el número introducido entre 5.
result2=a/b;
alert("El resultado de dividir "+a+" entre "+b+" es: "+result2);//Muestra el resultado de dividir el primer número introducido por el usuario entre el segundo. 
alert('El resultado de sumar los dos números es: '+(a+b));//Suma los dos números introducidos por el usuario. No pude hacerlo con el prompt, tenía que utilizar el valor parseInt.
}
</script>
</head>
<body>
<div onclick="mostrarMensaje1();" style="border: solid; border-radius: 40px; background-color: yellow; width: 100%; position: absolute; top: 10%; left: 0;">
<a href="#" style="text-decoration: none; text-align: center; color: black; font-size: 5em;"><p>Haz click aquí para hacer un cálculo simple</p></a>
</div>
</body>
</html>

Gracias.

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Buenas.

Con que cambiases esta linea te valdría:

Código: [Seleccionar]
msg=msg+Numero[i]+'*5='+(Number(Numero[i])+5)+'         ';
Saludos.


Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas, Pedro.

Pues sí, como me dijiste tú funciona. No entiendo porque con la línea que puse yo no funciona y con la que pones tu sí, pero bueno.

Gracias por contestarme.

Saludos.

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Esta es la linea :

Código: [Seleccionar]
msg=msg+Numero[i]+'+5='+Numero[i]+5+'         ';
El código hace lo siguiente cuando lee esa linea:
 
msg es un string, así que si le sumamos un número a un string, lo que hacemos es unirlo(concatenarlo).

En esta otra linea:
Código: [Seleccionar]
msg=msg+Numero[i]+'+5='+Numero[i]*5+'         ';Aquí si te funciona porque es una multiplicación, y deduzco, aunque no lo puedo confirmar, que lo primero que se ejecutan son las multiplicaciones y divisiones.

Saludos.

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Hola, Pedro.

Esto sí lo había entendido, lo que no entendí es porque cuando pongo:

Código: [Seleccionar]
Numero=Number;
el navegador no sabe que la variable (o array) tiene que ser un número si expresamente le indico que es un número (Number). Es decir este código:

Código: [Seleccionar]
<script type="text/javascript">
function sumar(){
var msg='Multiplicamos por 5 los números introducidos:\n';
var Numero=[], Cardenal=['primer','segundo','tercer','cuarto','quinto'];
Numero=Number;
alert('A continuación introduce 5 números.')
for(j=0;j<5;j++){
Numero[j]=prompt('Estás introduciendo el '+Cardenal[j]);
}
for(i in Numero){
msg=msg+Numero[i]+'+5='+Numero[i]+5+'         ';
}
alert(msg);
}
</script>

y el tuyo:

Código: [Seleccionar]
<script type="text/javascript">
function sumar(){
var msg='Multiplicamos por 5 los números introducidos:\n';
var Numero=[], Cardenal=['primer','segundo','tercer','cuarto','quinto'];
alert('A continuación introduce 5 números.')
for(j=0;j<5;j++){
Numero[j]=prompt('Estás introduciendo el '+Cardenal[j]);
}
for(i in Numero){
msg=msg+Numero[i]+'+5='+(Number(Numero[i])+5)+'         ';
}
alert(msg);
}
</script>

por qué son diferentes, si en los dos le decimos al navegador que la variable Numero tiene que ser un número. Es eso lo que no entiendo.

En el primero se lo decimos con la línea:

Código: [Seleccionar]
Numero=Number;

y en el segundo con la línea:

Código: [Seleccionar]
msg=msg+Numero[i]+'+5='+(Number(Numero[i])+5)+'         ';
pero tendría que funcionar igual, ¿no?

Gracias

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Al sumarle un string, pasa a ser una variable de tipo string.

mira este ejemplo, haber si así lo entiendes mejor.

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Portal web</title>
<script type="text/javascript">
window.onload = function(){
var msg = '';
var a = 5;
msg += 'var a = 5, Por lo cual la variable "a" es de tipo: ' + typeof a ;
a= 5 + 'unaCadenaString';
msg += '<br/> ahor a = 5 + "unaCadenaString", al sumarle un string, "a" pasa a ser de tipo: ' + typeof a;
document.getElementById('resultado').innerHTML = msg;
}
</script>
</head>
<body>
<div id="resultado"></div>
</body>
</html>

Saludos.

bermartinv

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 298
    • Ver Perfil
Puedes hacer otra cosa, por ejemplo cuando vayas a pedir los datos los puedes convertir directamente a numero:
Código: [Seleccionar]
for (var i = 0; i<5;i++){
   numero[i] = Number (prompt ('Introduzca numero:'));
}
for (i in numero){
   msg = msg + ('La suma de ')+numero[i]+('+5 = ')+(numero[i]+5)+('\n');
}
alert (msg);

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Gracias chicos!!!

Ahora sí lo comprendí :)

Gracias por la paciencia tambien. Sigo creando códigos (o por lo menos intentando, jejeje).

Saludos.

jbodenser

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 28
    • Ver Perfil
Hola Dimiste,
yo creo que además te has equivocado en la sintaxis.
Tu pones "Numero=Number;"
Y por lo que creo se debe poner "Number(Numero)"
el nombre de la variable va dentro de los parentesis.

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Efectivamente, jbodenser. Tienes toda la razón.

Creo que "Number()" es un método de un objeto global que existe en JavaScript, y los métodos siempre se invocan con "NombreDeMetodo(parámetro)".

Gracias.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".