buenas,
la idea esta más o menos bien pensada pero la ejecucción esta mal. por ejemplo, en el bucle que pide los valores siempre estas guardando en la misma variable de modo que los valores anteriores se pierden. deberías usar un array y llenarlo por cada ciclo. luego para pasar esos valores a la función, puedes hacer dos formas. la más simple pero asumo que no entenderás su funcionamiento, es usando el método
apply de la función
calculardatos. tu no lo has definido pero dicho método es existe en todas las funciones. lo que este método hace es aplicar dicha función a un objeto con ciertos parámetros. en este caso, no vas aplicar la función a un objeto por lo cual le pasas null como primer argumento de apply, y como segundo argumento le pasas el array.
la otra forma es más fácil de comprender pero requirirá que modifiques la función para que en lugar de recibir parametros variables, que siempre reciba un array. básicamente la modificación sería agregar un código para recorrer el array y realizar la suma. o sea, lo mismo que estas haciendo con arguments pero con el array.