Получение среднего числа массива, прерывается, если один из них -1 на JS - PullRequest
1 голос
/ 26 мая 2020

Я решаю некоторые задачи, данные в колледже, но не могу понять эту. Упражнение выглядит следующим образом:

Создайте программу, в которой пользователи вводят числа до тех пор, пока они не введут «-1», в этом случае программа прерывается и печатает среднее значение введенных чисел.

Я написал это на JS

array=[];
    for( var i =0; i<3; i++){
        val = parseInt(prompt( "Insert your numbers: "));
        array.push(val)
        }
function insert (array){
    var sum = 0;
    array.forEach(num=>{
        sum+= (num) / array.length;
    })
    return sum
}

console.log( "Average is " + Math.round(insert(array)))

Пытался написать:

if (val == -1){
    breaks;
}

Но просто все ломает. Я знаю, что, возможно, есть более простой способ решить эту проблему, и, вероятно, я все еще борюсь с logi c в циклах. Дело в том, что подсказки должны перестать зацикливаться, если пользователь вводит -1.

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 26 мая 2020
let numbers = [];
let val, sum, result

askForInput();

function askForInput(){
   val = parseInt(prompt("Pls enter a number: "));
   if(val == (-1)){
      result = getAverage(numbers);
      console.log("Result is: " + result);
   } else {
      askForInput();
   }
}

function getAverage(array){
   if(array.length == 0) return 0;
   for(let i = 0; i < array.length; i++){
      sum += array[i];
   }
   return sum / array.length;
}

Пример использования рекурсии

0 голосов
/ 26 мая 2020

Я бы изменил for l oop на while, чтобы l oop закрывался только в том случае, если пользователь вводит -1 (как вы написали сейчас, for l oop завершится, как только пользователь ввел 3 числа). Если вы инициализируете переменную перед while l oop, которая изменяется, чтобы соответствовать вводу пользователя, тогда вы даже можете обрабатывать logi c в определении l oop.

EX:

array = []; 
user_input = 0;

while (user_input != -1 ) {
 user_input = parseInt(prompt( "Insert a number: "));
 array.push(user_input)
}

Этот код должен постоянно запрашивать пользователя, пока он не введет -1, после чего цикл while l oop остановится.

0 голосов
/ 26 мая 2020

Как насчет этого:

array = [];

while((val = parseInt(prompt( "Insert your numbers: ")))!=-1)
{
    array.push(val)
}
function avg (array){
    var sum = 0;
    array.forEach(num=>{
        sum += num;
    })
    return array.length ? sum / array.length : 0;
}

console.log( "Average is " + Math.round(avg(array)))
...