Hola de nuevo.
No necesitas incrementar la variable numeros cada vez que se repite el while.
while(respuesta != "no")
{
numeros++;
numeros = parseFloat(prompt("Ingrese un número"));
Ni lo necesitas, ni sirve de nada, porque justo después de incrementarlo, eliminas su valor al usar esa misma variable para pedir al usuario que introduzca un número.
Si realmente necesitaras hacer esos incrementos, los estarías perdiendo. En todo caso tendrías que hacerlos con una variable distinta de la que usas para pedir dato al usuario, pero vamos, que en realidad no lo necesitas.
Otra cosa, cuando el número es positivo, en array[0] quieres ACUMULAR(sumar) este número y en array[4] lo que que queremos es CONTAR.
Tenemos que CONTAR cuántos positivos recibimos, para después, cuando el while() haya terminado porque el usuario ya no quiere seguir, será entonces cuando podamos calcular el promedio.
Pero si te fijas, en ambos casos estás ACUMULANDO, en array[4]
no estás CONTANDO
if(numeros >=0)
{
array[0] = array[ 0] + numeros;
array [4] = array [4] + numeros;
}
Si lo que queremos es CONTAR, lo que hay que hacer es incrementar en 1 y no sumar el número que nos han dado.
Podemos hacerlo así:
if(numeros >=0)
{
array[0] = array[ 0] + numeros;
array[4] = array[4] + 1;
}
O así, viene a ser lo mismo
if(numeros >=0)
{
array[0] = array[ 0] + numeros;
array[4]++;
}
Para los negativos, te pasa lo mismo, en array[5] hay que CONTAR, no ACUMULAR.
Sobre contar los 0.
Yo creo que el enunciado se refiere a que hay que contar solo cuando el usuario introduce el valor 0, ya que no es ni positivo ni negativo, pues se cuenta por separado en su propia variable.
Creo que no se refiere a que también cuentes los 0 si el usuario teclea por ejemplo: 200, 1000,...
Se podrían contar, pero el código se complica bastante más y repito que creo que no es lo que se pide.
En cualquier caso, te propongo que de momento solo cuentes cuando el usuario introduzca el valor 0.
Y luego, cuando el código ya esté terminado y funcionando bien, se puede intentar hacer lo de contar los 0 de cualquier número introducido.
De momento, cuenta solo el valor 0, y para ello hay que ampliar el if
while(respuesta != "no")
{
numeros = parseFloat(prompt("Ingrese un número"));
respuesta = prompt("Desea continuar? Escriba 'si' para continuar, 'no' para salir");
if (numeros == 0)
{
array[2]++;
}
else if(numeros >=0)
{
array[0] = array[ 0] + numeros;
array[4]++;
}
else
{
array[1] = array[1] + numeros;
array[5]++;
}
/*
if (numbers % 2 == 0) {
return array [3];
}
else
{}
*/
}
Siguiente, contar los números pares.
Esta parte del código casi la tenías hecha, no se por qué luego no lo has visto claro e incluso has puesto una sentencia return.
La lógica del programa a seguir sería:
- Pedir número al usuario.
- Compruebo si es 0, y lo cuento en caso afirmativo
- Compruebo si es positivo, y en caso afirmativo, lo acumulo y lo cuento
- Compruebo si es negativo, y en caso afirmativo, lo acumulo y lo cuento
- Compruebo si es par, y en caso afirmativo, lo cuentoEste es el "guión" que estamos siguiendo. Así que tras comprobar si es 0, positivo o negativo. Lo siguiente es comprobar si es par:
while(respuesta != "no")
{
numeros = parseFloat(prompt("Ingrese un número"));
respuesta = prompt("Desea continuar? Escriba 'si' para continuar, 'no' para salir");
if (numeros == 0)
{
array[2]++;
}
else if(numeros >=0)
{
array[0] = array[ 0] + numeros;
array[4]++;
}
else
{
array[1] = array[1] + numeros;
array[5]++;
}
if (numeros % 2 == 0) {
array[3]++;
}
}
Bien, el guión que hemos seguido hasta ahora, es el que hay que realizar MIENTRAS el while() esté funcionando.
Algunos de los computos que nos piden, no se pueden hacer hasta que el usuario haya terminado de introducir números, es decir, hay que hacerlos FUERA del bucle while()
Vamos a especificar mejor el guión a seguir:
MIENTRAS el usuario introduce números:
- Pedir número al usuario.
- Compruebo si es 0, y lo cuento en caso afirmativo
- Compruebo si es positivo, y en caso afirmativo, lo acumulo y lo cuento
- Compruebo si es negativo, y en caso afirmativo, lo acumulo y lo cuento
- Compruebo si es par, y en caso afirmativo, lo cuento
DESPUÉS de que el usuario haya introducido números:
- Calcular promedio de positivos (positivos acumulados / positivos contados)
- Calcular promedio de negativos(negativos acumulados / negativos contados)
- Calcular diferencia entre positivos y negativos (positivos acumulados - negativos acumulados)
MOSTRAR los resultados al usuarioEn programación es muy útil escribir previamente un guión de los pasos que necesitamos seguir.
Bien, los cómputos que nos piden DESPUÉS de la inserción de números, tenemos dos opciones:
- Calcular primero y mostrar después.
- Calcular al mismo tiempo que los vamos a mostrar.
Como son cálculos sencillos, podemos hacerlos al mismo tiempo que mostramos resultados, tal y como lo estabas haciendo tú.
Para estos cálculos NO debemos usar la variable "numeros" en ningún momento.
Esa variable solo sirve para pedir un dato al usuario y computarlo.
No sirve para nada más, no nos sirve para calcular promedios, ya que esta variable "numeros" solo conserva el último dato que introdujo el usuario. No tiene nada más.
document.write("<h1>Resultados:</h1>");
document.write("<br>");
document.write("La suma de los números negativos es :" + array[1]);
document.write("<br>");
document.write("La suma de los números positivos es :" + array[0]);
document.write("<br>");
document.write("Cantidad de números positivos :" + array[4]);
document.write("<br>");
document.write("Cantidad de números negativos :" + array[5]);
document.write("<br>");
document.write("Hay " + array [2] + " ceros.");
document.write("<br>");
document.write("La cantidad de números pares es: " + array [3]);
document.write("<br>");
document.write("El promedio entre los números positivos es: " + (array[0] / array[4]));
document.write("<br>");
document.write("El promedio entre los números negativos es: " + (array[1] / array[5]));
document.write("<br>");
document.write("La diferencia entre números positivos y negativos es: " + (array[0] - array[1]));