Autor Tema: JavaScript ejemplo if else if función que recibe parámetros y calcula CU01122E  (Leído 3636 veces)

jbodenser

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 28
    • Ver Perfil
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>
« Última modificación: 24 de Noviembre 2015, 08:33 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
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

jbodenser

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 28
    • Ver Perfil
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!

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
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

jbodenser

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 28
    • Ver Perfil
Wow! Mil gracias, me has aclarado bastante.
Un gran abrazo! :)

 

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