Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Dimitar Stefanov en 31 de Enero 2016, 16:05

Título: JavaScript función que devuelve un array como resultado calcular precio CU01122E
Publicado por: Dimitar Stefanov en 31 de Enero 2016, 16:05
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.
Título: Re:JavaScript función que devuelve un array como resultado calcular precio CU01122E
Publicado por: Ogramar en 03 de Febrero 2016, 08:36
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
Título: Re:JavaScript función que devuelve un array como resultado calcular precio CU01122E
Publicado por: Dimitar Stefanov en 03 de Febrero 2016, 11:46
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.
Título: Re:JavaScript función que devuelve un array como resultado calcular precio CU01122E
Publicado por: Ogramar en 08 de Febrero 2016, 08:53
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
Título: Re:JavaScript función que devuelve un array como resultado calcular precio CU01122E
Publicado por: Dimitar Stefanov en 09 de Febrero 2016, 10:59
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.