Reto #1

La función se va a probar pasando los siguientes parámetros: CalcularPromedio(10, 6, [10, 7, 8]).

Victor Rincón Aquino

No se pidió que se validará los parámetros ingresados, de todas formas me parece que se han dado demasiados pasos para resolver el problema. Como validó los datos de entrada, intente probando los siguientes parámetros y arrojó un error.

CalcularPromedio(10, 6, [10, "a", false]);

function CalcularPromedio(examenFinal, examenParcial, trabajos)

{

    var promedioTrabajo = 0,

        promedio = 0;

    if (!ValidarEntradas(examenFinal, examenParcial, trabajos))

        return;

    promedioTrabajo = CalcularPromedioTrabajo(trabajos);

    promedio = (examenFinal * 0.45) + (examenParcial * 0.35) + (promedioTrabajo * 0.20);

    if (promedio < 7) {

        alert("Uste a reprobado el examen \n Su calificacion es de: " + promedio);

    } else {

        alert("Uste a aprobado el examen \n Su calificacion es de: " + promedio);

    }

}

function ValidarEntradas(examenFinal, examenParcial, trabajos) {

    if (IsNumeric(examenFinal) == false || IsNumeric(examenParcial) == false) {

        alert("Solo se aceptan números");

        return false;

    }

    if (!(parseFloat(examenFinal) >= 0) && !(parseFloat(examenFinal) <= 100)) {

        alert("El examen final no esta entre el rango permitido");

        return false;

    }

    if (!(parseFloat(examenParcial) >= 0) && !(parseFloat(examenParcial) <= 100)) {

        alert("El examen parcial no esta entre el rango permitido");

        return false;

    }

    if (!Array.isArray(trabajos)) {

        alert("El formato de los trabajos realizados no son validos");

        return false;

    }

    if (trabajos.length == 0) {

        alert("Debe de enviar los trabajos realizados en clases");

        return false;

    }

    return true;

}

function CalcularPromedioTrabajo(trabajos) {

    var resultado = 0,

        sumatoria = 0;

    for (var i = 0; i < trabajos.length; i++) {

        sumatoria += trabajos[i];

    }

    return resultado = sumatoria / trabajos.length;

}

function IsNumeric(n) {

    return !isNaN(parseFloat(n)) && isFinite(n);

}