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: jbodenser en 22 de Noviembre 2015, 23:18

Título: JavaScript ejemplo if else if función que recibe parámetros y calcula CU01122E
Publicado por: jbodenser en 22 de Noviembre 2015, 23:18
Muy buenas a todos alumnos y profesores.

Por fin he terminado este ejercicio, (o al menos eso creo). Estaría agradecido que me comentarais algo al respecto.

También quiero decir que para la segunda parte del ejercicio quise crear la función 2 FUERA de la función 1, e invocar desde esta, pero no me funcionaba, no se por qué. Podía invocarlo pero el array solo tenia valores 'undefined'. Eso a qué se debe? además vi que el compañero si lo pudo hacer. https://www.aprenderaprogramar.com/foros/index.php?topic=3259.msg14389#msg14389

Muchas gracias por leer.

Código: [Seleccionar]
<!DOCTYPE html>
<html>

<head>
<title>Ejercicio impuestos | aprender a programar.com</title>
<script>
function obtenerImporteConImpuestos (importeSinImpuestos, tipoProducto) {
var importeSinImpuestos, tipoProducto, precioFinal, funcion2;
var importes = [];
importeSinImpuestos = prompt("Ingrese importe");
tipoProducto = prompt("Ingrese tipo de producto (1, 2 ó 3)");
importeSinImpuestos = Number(importeSinImpuestos);
if (tipoProducto == 1) {
precioFinal = importeSinImpuestos * 1.21;
alert('El precio con impuestos es: ' + precioFinal + '€')
} else if (tipoProducto == 2) {
precioFinal = importeSinImpuestos * 1.10;
alert('El precio con impuestos es: ' + precioFinal + '€')
} else if (tipoProducto == 3) {
precioFinal = importeSinImpuestos * 1.05;
alert('El precio con impuestos es: ' + precioFinal + '€')
} else {
alert('El tipo de producto no existe!');
}

obtenerImporteConImpuestos2 (importeSinImpuestos);
alert(importes);
alert(importeSinImpuestos + '€ más impuestos para el tipo de producto 1: ' + importes[1] + '€');
alert(importeSinImpuestos + '€ más impuestos para el tipo de producto 2: ' + importes[2] + '€');
alert(importeSinImpuestos + '€ más impuestos para el tipo de producto 3: ' + importes[3] + '€');

function obtenerImporteConImpuestos2 (importeSinImpuestos){
importes = [undefined, (importeSinImpuestos * 1.21), (importeSinImpuestos * 1.10), (importeSinImpuestos * 1.05)];
return importes;
}
}


</script>
</head>

<body>
<button type="button" onclick="obtenerImporteConImpuestos()">Llamar funcion 1!</button>
</body>
</html>
Título: Re:JavaScript ejemplo if else if función que recibe parámetros y calcula CU01122E
Publicado por: Ogramar en 24 de Noviembre 2015, 08:34
Buenas en mi nagegador aparecían algunos caracteres extraños, lo he solucionado añadiendo la línea <meta charset="utf-8"/> dentro del head. Te recomiendo que la añadas siempre para garantizar que quienes vean tus páginas web las vean bien.

Se recomienda siempre declarar las variables

No declarada: importes = [undefined, (importeSinImpuestos * 1.21), (importeSinImpuestos * 1.10), (importeSinImpuestos * 1.05)];

Sí declarada: var importes = [undefined, (importeSinImpuestos * 1.21), (importeSinImpuestos * 1.10), (importeSinImpuestos * 1.05)];


También aparecen problemas con los decimales, 100*1,10 = 110 pero te muestra 110.00000000000001 por lo que se explica en http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=789:tipos-de-variables-javascript-numericas-number-integer-float-double-resultados-nan-e-infinity-cu01113e&catid=78:tutorial-basico-programador-web-javascript-desde-&Itemid=206

Para el problema del código que no te funcionaba bien, pega el código para poder verlo y así poder saber qué es lo que no funcionaba.

Salu2
Título: Re:JavaScript ejemplo if else if función que recibe parámetros y calcula CU01122E
Publicado por: jbodenser en 24 de Noviembre 2015, 22:19
Hola y muchas gracias.
He colocado el meta charset, he solucionado lo de los numeros 10000000.1
Pero al declarar la variable, me da undefined y el codigo no funciona correctamente.

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title>Ejercicio impuestos | aprender a programar.com</title>
<meta charset="UTF-8">
<script>
function obtenerImporteConImpuestos (importeSinImpuestos, tipoProducto) {
var importeSinImpuestos, tipoProducto, precioFinal;
var importes = [];
importeSinImpuestos = prompt("Ingrese importe");
tipoProducto = prompt("Ingrese tipo de producto (1, 2 ó 3)");
importeSinImpuestos = Number(importeSinImpuestos);
if (tipoProducto == 1) {
precioFinal = importeSinImpuestos * 1.21;
alert('El precio con impuestos es: ' + precioFinal + '€')
} else if (tipoProducto == 2) {
precioFinal = importeSinImpuestos * 110 / 100;
alert('El precio con impuestos es: ' + precioFinal + '€')
} else if (tipoProducto == 3) {
precioFinal = importeSinImpuestos * 1.05;
alert('El precio con impuestos es: ' + precioFinal + '€')
} else {
alert('El tipo de producto no existe!');
}
obtenerImporteConImpuestos2 (importeSinImpuestos);
alert(importes);
alert(importeSinImpuestos + '€ más impuestos para el tipo de producto 1: ' + importes[1] + '€');
alert(importeSinImpuestos + '€ más impuestos para el tipo de producto 2: ' + importes[2] + '€');
alert(importeSinImpuestos + '€ más impuestos para el tipo de producto 3: ' + importes[3] + '€');
function obtenerImporteConImpuestos2 (importeSinImpuestos){
var importes = [];
importes = [undefined, (importeSinImpuestos * 1.21), (importeSinImpuestos * 110 / 100), (importeSinImpuestos * 1.05)];
return importes;
}
}


</script>
</head>

<body>
<button type="button" onclick="obtenerImporteConImpuestos()">Llamar funcion 1!</button>
</body>
</html>

y el codigo que habia mencionado que no funciona es este.

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title>Ejercicio impuestos | aprender a programar.com</title>
<meta charset="UTF-8">
<script>
function obtenerImporteConImpuestos (importeSinImpuestos, tipoProducto) {
var importeSinImpuestos, tipoProducto, precioFinal;
var importes = [];
importeSinImpuestos = prompt("Ingrese importe");
tipoProducto = prompt("Ingrese tipo de producto (1, 2 ó 3)");
importeSinImpuestos = Number(importeSinImpuestos);
if (tipoProducto == 1) {
precioFinal = importeSinImpuestos * 1.21;
alert('El precio con impuestos es: ' + precioFinal + '€')
} else if (tipoProducto == 2) {
precioFinal = importeSinImpuestos * 110 / 100;
alert('El precio con impuestos es: ' + precioFinal + '€')
} else if (tipoProducto == 3) {
precioFinal = importeSinImpuestos * 1.05;
alert('El precio con impuestos es: ' + precioFinal + '€')
} else {
alert('El tipo de producto no existe!');
}
obtenerImporteConImpuestos2 (importeSinImpuestos);
alert(importes);
alert(importeSinImpuestos + '€ más impuestos para el tipo de producto 1: ' + importes[1] + '€');
alert(importeSinImpuestos + '€ más impuestos para el tipo de producto 2: ' + importes[2] + '€');
alert(importeSinImpuestos + '€ más impuestos para el tipo de producto 3: ' + importes[3] + '€');
}

function obtenerImporteConImpuestos2 (importeSinImpuestos){
var importes = [];
importes = [undefined, (importeSinImpuestos * 1.21), (importeSinImpuestos * 110 / 100), (importeSinImpuestos * 1.05)];
return importes;
}


</script>
</head>

<body>
<button type="button" onclick="obtenerImporteConImpuestos()">Llamar funcion 1!</button>
</body>
</html>

Un saludo!
Título: Re:JavaScript ejemplo if else if función que recibe parámetros y calcula CU01122E
Publicado por: Ogramar en 25 de Noviembre 2015, 08:10
Buenas

Tienes un problema con los nombres de variables, estás declarando dos veces var importes y estás suponiendo que importes siempre es lo mismo, pero algo puede tener el mismo nombre y no ser lo mismo. Para evitar confusión con los nombres de momento te recomiendo declararlas con distintos nombres, por ejemplo importes1 e importes2. Además para recuperar el contenido que te devuelve una función con un return debes hacer una asignación de esta manera: importes = obtenerImporteConImpuestos2 (importeSinImpuestos);

Al hacer esto la variable importes queda con el contenido que devuelve la función a través del return.

Más adelante en el curso se estudia con más detalle los conflictos de nombres, ámbitos, etc. por lo que no te entretengas ahora con las cuestiones de nombres ya que se estudiarán más adelante

El código 1 quedaría así:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title>Ejercicio impuestos | aprender a programar.com</title>
<meta charset="UTF-8">
<script>
function obtenerImporteConImpuestos (importeSinImpuestos, tipoProducto) {
var importeSinImpuestos, tipoProducto, precioFinal;
var importes = [];
importeSinImpuestos = prompt("Ingrese importe");
tipoProducto = prompt("Ingrese tipo de producto (1, 2 ó 3)");
importeSinImpuestos = Number(importeSinImpuestos);
if (tipoProducto == 1) {
precioFinal = importeSinImpuestos * 121/100;
alert('El precio con impuestos es: ' + precioFinal + '€')
} else if (tipoProducto == 2) {
precioFinal = importeSinImpuestos * 110 / 100;
alert('El precio con impuestos es: ' + precioFinal + '€')
} else if (tipoProducto == 3) {
precioFinal = importeSinImpuestos * 105/100;
alert('El precio con impuestos es: ' + precioFinal + '€')
} else {
alert('El tipo de producto no existe!');
}
importes = obtenerImporteConImpuestos2 (importeSinImpuestos);
alert(importes);
alert(importeSinImpuestos + '€ más impuestos para el tipo de producto 1: ' + importes[1] + '€');
alert(importeSinImpuestos + '€ más impuestos para el tipo de producto 2: ' + importes[2] + '€');
alert(importeSinImpuestos + '€ más impuestos para el tipo de producto 3: ' + importes[3] + '€');
function obtenerImporteConImpuestos2 (importeSinImpuestos){
var importes2 = [];
importes2 = [undefined, (importeSinImpuestos * 121 / 100), (importeSinImpuestos * 110 / 100), (importeSinImpuestos * 105 / 100)];
return importes2;
}
}
</script>
</head>

<body>
<button type="button" onclick="obtenerImporteConImpuestos()">Llamar funcion 1!</button>
</body>
</html>

El segundo código se soluciona como te he indicado con importes = obtenerImporteConImpuestos2 (importeSinImpuestos);

Salu2
Título: Re:JavaScript ejemplo if else if función que recibe parámetros y calcula CU01122E
Publicado por: jbodenser en 25 de Noviembre 2015, 21:49
Wow! Mil gracias, me has aclarado bastante.
Un gran abrazo! :)