Autor Tema: Ejercicio curso ingreso facultad Javascript programa pedir numeros, sumar y mult  (Leído 2222 veces)

leforte

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Hola compañeros soy nuevito por aca, estoy haciendo un ejercicio para el curso de ingreso de la facultad donde tengo que dejar que el usuario escriba una cantidad de números a elección propia y luego sumar los números positivos y multiplicar los negativos. Algo debo tener mal en el código ya que sólo se esta ejecutando el prompt pidiendo un solo número, la confirmación de continuar y se cierra haciendo una suma incorrecta.
Todo lo que puedan ver mal por favor háganmelo saber ya que recién estoy empezando a programar y todo me sirve  ;D
Les comparto el código HTML y JS a ver si me pueden dar una mano, saludos!

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Curso Ingreso UTN FRA</title>

<!--Estilos-->
<link rel="stylesheet" type="text/css" href="../estilo.css">
<link rel="stylesheet" type="text/css" href="../animacion.css">
<!--final de Estilos-->

<!--Lógica-Programación-->
<script type="text/javascript" src="jsIteracionesWhile-08.js"></script>
        <!--Final de Lógica-Programación -->
<link rel="icon" type="image/x-icon" href="../favicon.ico">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>


<div class=" animated bounceIn header">
   

     <center><h5>WHILE  <strong> Ejercicio 8</strong> </h5></center>
   <a  class="MiBotonUTNnav" onclick="location.href='index.html'" ><i class="far fa-hand-point-left"></i>Men&uacute; ejercicios</a>

</div>

<div class="row">
  <div class="col-3 col-s-3 menu">
   
  </div>

  <div class="col-6 col-s-9">
  <form class=" animated bounceInLeft FormIngreso">
   <h1>Ingrese datos.</h1>
 
<INPUT type="text" placeholder="La suma de los positivos" id="txtIdSuma" readonly>
<INPUT type="text" placeholder="El producto de los negativos" id="txtIdProducto" readonly>

    <a  class="MiBotonUTNnav" onclick="mostrar()" >Comenzar el ingreso</a>
</form>
  </div>

  <div class="col-3 col-s-12">
    <div class="aside animated bounceInUp">
    <h2>Enunciado:</h2>

<h3>
Al presionar el bot&oacute;n pedir  n&uacute;meros  hasta que el usuario quiera,
sumar los que son positivos y multiplicar los negativos.

</h3>
     
    </div>
  </div>
</div>

<div class="footer">
 
  <!--a class="MiBotonUTNnav" onclick="location.href='../index.html'" ><i class="fas fa-bars"></i>Men&uacute; Principal</a-->
  <p>Curso de ingreso UTN FRA</p>
</div>

</body>
</html>

Código: [Seleccionar]
function mostrar()
{
let contador;
let respuesta;
let sumaPositivos;
let multiplicacionNegativos;
contador = 1;
sumaPositivos=1;
multiplicacionNegativos=1;
respuesta = "si";


while(respuesta != "no")
{
contador++;
contador = parseFloat(prompt("Ingrese un numero positivo o negativo"));
respuesta = prompt("Desea continuar? Escriba 'si' para continuar, 'no' para salir");

if(contador<0)
{
respuesta = respuesta + contador
respuesta = multiplicacionNegativos;
multiplicacionNegativos = multiplicacionNegativos * multiplicacionNegativos;
break;
}
else if(contador>=0)
{
respuesta = respuesta + contador
respuesta = sumaPositivos;
sumaPositivos = sumaPositivos + sumaPositivos;
break;
}
else
{
alert("Ingrese un número válido");
break;
}
}


document.getElementById("txtIdSuma").value = sumaPositivos;
document.getElementById("txtIdProducto").value = multiplicacionNegativos;
« Última modificación: 18 de Octubre 2020, 20:13 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 983
    • Ver Perfil
Hace años que no hago nada con JavaScript, pero la lógica de la programación es común a todos los lenguajes.

Y la lógica que aplicas, pues no es muy lógica la verdad  ;)

Primero incrementas la variable contador, sin motivo aparente, ya que no se te pide contar nada
Citar
contador++;
Ese incremento de contador, no importa de todos modos, porque ahora modificas su valor asignando lo que va a introducir el usuario. Cualquier cosa que hubieras contado, se pierde:
Citar
contador = parseFloat(prompt("Ingrese un numero positivo o negativo"));
Preguntas al usuario si quiere continuar. Quizás sería más lógico preguntarlo después de hacer los cálculos y no antes, pero bueno, la verdad es que no afecta al funcionamiento así que no pasa nada malo.
Citar
respuesta = prompt("Desea continuar? Escriba 'si' para continuar, 'no' para salir");

A continuación, la lógica pierde todo sentido.
En respuesta, donde el usuario te ha dicho si quiere continuar o no, cambias su valor juntando la respuesta más el número introducido.

Pero tampoco importa, porque en la siguiente líneas vuelves a modificar el valor de respuesta asignándole el valor de la variable multiplicacionNegativos, que lo único que tiene es el valor 1 que ha recibido al inicializarse.

Y luego a multiplicacionNegativos, le asignas su valor actual (que es 1) multiplicado por su valor actual (1).
Como 1 * 1 es igual a 1, pues multiplicacionNegativos sigue conservando su valor inicial.
Citar
if(contador<0)
{
   respuesta = respuesta + contador
   respuesta = multiplicacionNegativos;
   multiplicacionNegativos = multiplicacionNegativos * multiplicacionNegativos;
         break;
      }

No necesitas una variable contador, ni necesitas juntar el contador con la respuesta, ni nada de eso.

Prueba con el código como lo escribo a continuación. Yo no lo he probado pero diría que es correcto.
Pregunta si algo no te queda claro, pero creo que a simple vista verás lo que hace, y que es más sencillo de lo que parece.
Un saludo.

Código: [Seleccionar]
function mostrar()
{
let respuesta;
let numero;
        let sumaPositivos;
let multiplicacionNegativos;
numero = 0;
sumaPositivos=0;
multiplicacionNegativos=1;
respuesta = "si";


while(respuesta != "no")
{
numero = parseFloat(prompt("Ingrese un numero positivo o negativo"));

if(numero<0)
{
multiplicacionNegativos = multiplicacionNegativos * numero;
break;
}
else if(contador>=0)
{
sumaPositivos = sumaPositivos + numero;
break;
}
else
{
alert("Ingrese un número válido");
break;
}

respuesta = prompt("Desea continuar? Escriba 'si' para continuar, 'no' para salir");
}


document.getElementById("txtIdSuma").value = sumaPositivos;
document.getElementById("txtIdProducto").value = multiplicacionNegativos;
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

leforte

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Primero que nada, muchas gracias Kabuto por responder tan rápido y por ayudarme con esto ya que hay cosas en las que me cuesta entender la lógica de los lenguajes.
Segundo, entiendo a lo que te referís que sería más lógico preguntar si desea continuar introduciendo números después de introducirlos, pero encuentro dos problemas, el primero es que la linea "respuesta = prompt("Desea continuar? Escriba 'si' para continuar, 'no' para salir");" no puede estar dentro de la llave de switch ya que el visual code studio me la oscurece como si no tuviese función alguna, y segundo que de la manera que escribiste el código me abre una ventana modal para introducir un número. luego de confirmación de si quiero continuar o no y se cierra... Cómo tendría que hacer para que luego de la confirmación vuelva otra vez a la sección de código donde puedo introducir datos?

leforte

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Kabuto logré solucionar el problema que tenía! El error estaba en la ubicación de las dos ventanas prompt, tenían que ir DENTRO del bucle while. Mil gracias por tu ayuda!!  ;D ;)

Código: [Seleccionar]
function mostrar()
{
let respuesta;
let numero;
    let sumaPositivos;
let multiplicacionNegativos;
numero = 0;
sumaPositivos = 0;
multiplicacionNegativos = 1;
respuesta = "si";

while(respuesta != "no")
{
numero = parseFloat(prompt("Ingrese un numero positivo o negativo"));
respuesta = prompt("Desea continuar? Escriba 'si' para continuar, 'no' para salir");

if(numero>=0)
{
sumaPositivos = sumaPositivos + numero;
}
else
{
multiplicacionNegativos = multiplicacionNegativos * numero;
}
}

document.getElementById("txtIdSuma").value = sumaPositivos;
document.getElementById("txtIdProducto").value = multiplicacionNegativos;
}
« Última modificación: 18 de Octubre 2020, 20:11 por Ogramar »

 

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