Autor Tema: JavaScript función que devuelve un array como resultado calcular precio CU01122E  (Leído 3115 veces)

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Códigos del primer ejercicio:

Código HTML:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Curso Java</title>
<script type="text/javascript" src="CU01122E(1).js"></script>
<style>
div {
float: left;
border: solid;
width: 20%;
margin: 5%;
font-size: 110%;
color: white;
padding: 5%;
text-align: center;
cursor: pointer;
}
</style>
</head>
<body>
<div style="background-color: black;" onclick="obtenerImporteConImpuestos(100,1);">IVA 21%</div>
<div style="background-color: red;" onclick="obtenerImporteConImpuestos(100,2);">IVA 10%</div>
<div style="background-color: green;"onclick="obtenerImporteConImpuestos(100,3);">IVA 5%</div>
</body>
</html>

Código JavaScript: "CU01122E(1).js"

Código: [Seleccionar]
function obtenerImporteConImpuestos(importeSinImpuestos,a){
var msg;
msg=('El importe sin impuestos es: '+importeSinImpuestos+'\n\n');
if(a==1){
alert(msg+'El importe con impuestos es:'+ivaA(importeSinImpuestos));
}else if(a==2){
alert(msg+'El importe con impuestos es:'+ivaB(importeSinImpuestos));
}else if(a==3){
alert(msg+'El importe con impuestos es:'+ivaC(importeSinImpuestos));
}
}

function ivaA(importeSinImpuestos){
var importeConImpuestos;
importeConImpuestos=importeSinImpuestos*1.21;
return importeConImpuestos;
}

function ivaB(importeSinImpuestos){
var importeConImpuestos;
importeConImpuestos=importeSinImpuestos*1.10;
return importeConImpuestos;
}

function ivaC(importeSinImpuestos){
var importeConImpuestos;
importeConImpuestos=importeSinImpuestos*1.05;
return importeConImpuestos;
}

Los códigos del segundo ejercicio:

Código HTML:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Curso Java</title>
<script type="text/javascript" src="CU01122E(2).js"></script>
<style>
div {
float: left;
border: solid;
width: 20%;
margin: 5%;
font-size: 110%;
color: white;
padding: 5%;
text-align: center;
cursor: pointer;
}
</style>
</head>
<body>
<div style="background-color: black;" onclick="alert(obtenerImporteConImpuestos(100));">Ver ejercicio</div>
</body>
</html>

Código JavaScript: "CU01122E(2)"

Código: [Seleccionar]
function obtenerImporteConImpuestos(importeSinImpuestos){
var resultado;
resultado=[];
resultado[0]=undefined;
resultado[1]=importeSinImpuestos*1.21;
resultado[2]=importeSinImpuestos*1.10;
resultado[3]=importeSinImpuestos*1.05;
return ('Para precio sin impuestos'+importeSinImpuestos+' si el producto es tipo 1 el importe es '+resultado[1]+' , si el producto es tipo 2 el importe es '+resultado[2]/100+' y si el producto es tipo 3 el importe es '+resultado[3]);
}

Saludos.
« Última modificación: 03 de Febrero 2016, 08:32 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas dimiste

Ten en cuenta que has puesto <title>Curso Java</title> cuando esto es JavaScript, que no tiene nada (o casi nada) que ver con Java.

Ejercicio 1) No sólo veo el ejercicio bien resuelto sino que has hecho incluso más de lo que se pedía :) Como curiosidad tenemos que en el caso de impuesto 10% sale el mensaje El importe sin impuestos es: 100 El importe con impuestos es:110.00000000000001

Esto se debe a la forma de representación interna de números decimales que usan los computadores, no es por ningún fallo en la programación. Una forma de resolver esto es evitar aplicar decimales haciendo cambios de este tipo:

En lugar de importeConImpuestos=importeSinImpuestos*1.10;

Escribir importeConImpuestos=importeSinImpuestos*110/100;

Repito que esto no tiene que ver con que haya algo mal sino con otras cuestiones.


Ejercicio 2. No lo has resuelto correctamente. El ejercicio pedía lo siguiente: "La función debe devolver un array..."

En tu código la función no devuelve un array, sino que devuelve una cadena de texto (un String). En la respuesta que se da en este hilo puedes ver un ejemplo donde sí se devuelve un array: https://www.aprenderaprogramar.com/foros/index.php?topic=3259.0

Salu2

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Gracias por corregirme los ejercicios, Ogramar, y por ayudarme a mejorar.

La verdad que no había entendido muy bien a que se refería el ejercicio diciendo:

Citar
La función debe devolver un array con valor undefined para el índice 0, el importe sin impuestos más el 21% para el índice 1, el importe sin impuestos más el 10% para el índice 2, ó el importe sin impuestos más el 5% para el índice 3. Invoca la función haciendo que se muestre el contenido del array por pantalla.

Pensaba que poniendo "return" al final de la función y dentro de la misma orden incluyendo los arrays, ya devolvía un array. Es decir, poniendo:

Código: [Seleccionar]
return ('Para precio sin impuestos'+importeSinImpuestos+' si el producto es tipo 1 el importe es '+resultado[1]+' , si el producto es tipo 2 el importe es '+resultado[2]/100+' y si el producto es tipo 3 el importe es '+resultado[3]);
Vi el enlace que me mencionas en la respuesta y creo que el código quedaría de la siguiente manera:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Curso JavaScript</title>
<style>
div {
float: left;
border: solid;
width: 20%;
margin: 5%;
font-size: 110%;
color: white;
padding: 5%;
text-align: center;
cursor: pointer;
}
</style>
<script type="text/javascript">
function obtenerImporteConImpuestos(importeSinImpuestos){
var resultado;
resultado=[];
resultado[0]=undefined;
resultado[1]=importeSinImpuestos*1.21;
resultado[2]=importeSinImpuestos*10;
resultado[3]=importeSinImpuestos*1.05;
alert('Para precio sin impuestos ' + importeSinImpuestos + ' de tipo de producto 1, el importe es ' + resultado[1]);
alert('Para precio sin impuestos ' + importeSinImpuestos + ' de tipo de producto 2, el importe es ' + resultado[2]);
alert('Para precio sin impuestos ' + importeSinImpuestos + ' de tipo de producto 3, el importe es ' + resultado[3]);
}
</script>
</head>
<body>
<div style="background-color: black;" onclick="(obtenerImporteConImpuestos(100));">Ver ejercicio</div>
</body>
</html>

Aunque sigo sin ver la diferencia. En el código del enlace lo que hace pedro,, es utilizar una función dentro de otra función, pero devuelve igualmente una cadena de texto y dentro de ella los arrays. Igual que yo. No entiendo lo que he hecho mal. Ya te digo, a veces me cuesta entender mis errores y agradezco que me lo expliqueis para que no vuelva a comenterlos (o por lo menos, intentarlo).

Un saludo.

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas fijándonos en lo que pide el ejercicio:

1. La función debe mostrar por pantalla...

2. La función debe devolver un array...

Cuando se pida devolver un array, la función debe devolver un array como en el ejemplo de Pedro:

Código: [Seleccionar]
function obtenerImporteConImpuestos2(importeSinImpuestos){
var resultado=[];
resultado =[undefined, (importeSinImpuestos*1.21), (importeSinImpuestos*1.10), (importeSinImpuestos*1.05)]
return resultado;
}

Aquí lo que devuelve la función es lo que va en el return. En el return se devuelve un array, que es lo que pedía el ejercicio.

En cambio aquí:

Código: [Seleccionar]
return ('Para precio sin impuestos'+importeSinImpuestos+' si el producto es tipo 1 el importe es '+resultado[1]+' , si el producto es tipo 2 el importe es '+resultado[2]/100+' y si el producto es tipo 3 el importe es '+resultado[3]);

Lo que devuelve la función es una cadena (un texto entre comillas).

Si no te queda claro, consulta de nuevo.

Salu2

Dimitar Stefanov

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

Ahora sí lo ve.  Me costó, jeje. Lo que tenía que hacer es devolver sola y exclusivamente una variable y no una cadena de texto. Gracias por aclararme la cuestión.

Saludos.


 

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