Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Duda del promedio

Estuve trabajando en primer desafio del segundo curso de lógica de promgramación y hay un ejercicio, que nos reta a a sacar el promedio de unos números; Mi duda consiste en saber si existe una forma de calcular el promedio de forma mas "automatica" ya que tuve que literal sumar los 3 números y divir en 3, lo que me parece poco practico en el caso que decida agregar variables.

function promedio() {
    alert('Ahora, voy a deicrte el promedio de 3 números');
    let number1 = parseInt(prompt("escribe el primer número"));
    let number2 = parseInt(prompt("escribe el segundo número"));
    let number3 = parseInt(prompt("escribe el tercer número"));
    console.log(`${number1}, ${number3}, ${number3}`);
    console.log((number1+number2+number3)/3);
    alert((number1+number2+number3)/3);
}

promedio();

Para poner un ejemplo de mi punto, si quisiera calcular los mismo en un lenguaje como SQL puedo calcular directamente el promedio o sumar las variable y luego contarlas, de esta forma:

--Opción 1

Select AVG(number1,number2,nnumber3) from tabla_numbers

--Opción 2
Select SUM(number1,number2,nnumber3,numberX)/COUNT(number1,number2,nnumber3,numberX) from tabla_numbers

Gracias

1 respuesta

Hola tengo una solucion, no digo que sea la mejor, pero funciona, y te explico como funciona:

function promedio() {
    let cantidadNumeros = parseInt(prompt("Ingresa la cantidad de numeros totales para el promedio"));
    let arrayNumeros = [];
    let suma = 0;
    let promedio = 0;

    if(cantidadNumeros != typeof('number')) alert("Solo puedes ingresar valores numericos");
    else if (cantidadNumeros = '') alert("No puedes dejar vacio el campo");
    else if(cantidadNumeros < 0 || cantidadNumeros > 20)alert("La cantidad no debe ser un numero negativo, ni ser mayor a 20");
    else{
        for (let i = 1; i <= cantidadNumeros; i++) {
            let numeros = parseInt(prompt(`Ingresa el numero ${i}`));
            arrayNumeros.push(numeros);
        }
        for (let i = 0; i < arrayNumeros.length; i++) {
            suma += arrayNumeros[i];
        }
        promedio = suma / cantidadNumeros;
    }

    return alert(`Promedio total : ${promedio}`);
}

promedio();

La funcion pregunta el total de numeros que vas a usar para el promedio, tambien hice unas cosas por si se deja en blanco el campo, o da un valor negativo, el retornara 0, o si ingresa un valor que no sea un numero (Aunque faltaron en el for, puedes agregarselo los if), tambien la limite a solo poder sacar un maximo de un promedio de 20 numeros, pero si quieres se lo cambias.

Al principio pregunta al usuario cuantos numeros usara para el promedio con:let cantidadNumeros = parseInt(prompt("Ingresa la cantidad de numeros totales para el promedio")); Con esto convierto la respuesta del usuario a numero, y ahi consigo dos cosas, el valor con el que voy dividir al final, y tambien el valor que me sirve para que me funcione el for.

En el primer for lo que hago es usar el numero de cantidadNumeros para que cuando i sea menor que el, pregunte los numeros que va a utilizar para el promedio, y asi mismo voy metiendo esos numeros en el array usando el metodo push().

En el ultimo for lo unico que hago es sumar todos los numeros que tengo dentro del array para tener un valor total, y luego abajo de eso, lo divido por la variable de antes cantidadNumeros, y retorno un alert mostrando el promedio total.

Falta agregar algunas cosas, como poner condicionales en el for por si el usuario en vez de meter numeros mete otra cosa o deja los espacios en blanco etc. Eso se lo puedes agregar.

Espero te sirva mi ayuda y mi explicacion

Saludos :)