Как найти среднее значение в javascript?

#javascript

#javascript

Вопрос:

Итак, я довольно новичок в JavaScript, но, похоже, я не могу найти среднее значение в своем коде. Я хочу понять, почему мое среднее значение не работает. Любая помощь вам, ребята?

 function getEvenOdd() {
  var oddSum = 0;
  var evenSum = 0;
  var num = 0;
  var evenAvg = 0;
  var oddAvg = 0;

  while (true) {
    num = parseInt(prompt("Enter a number(-1 to exit)"));
    if (num == -1) {
      break;
    }
    if (num % 2 == 0) {
      evenSum  = num;
    } else {
      oddSum  = num;
    }
    evenAvg = evenSum / num;
    oddAvg = oddSum / num;
  }
  alert("Sum of all even numbers is: "   evenSum);
  alert("Sum of all odd numbers is: "   oddSum);
  alert("Average of all even numbers is : "   evenAvg);
  alert("Average of all odd numbers is: "   oddAvg);
}  

Комментарии:

1. ваша проблема не в том, как использовать javascript, а в том, что такое среднее значение — среднее — это общее количество значений, деленное на количество значений — ваш код делает общее количество значений, деленное на последнее введенное число… таким образом, среднее значение 8,4,2, 10 равно (8 4 2 10)/4 … не (8 4 2 10)/10

Ответ №1:

В вашем коде, чтобы вычислить oddAvg и evenAvg , вы разделили evenSum и oddSum на num переменную (которая вводится из prompt ).

И, как вы знаете, average = total sum / total count , поэтому неправильно делить сумму на входную number переменную.

Вместо этого вам нужно вычислить количество odd чисел even и even и разделить сумму odd even и odd на количество чисел и следующим образом.

 function getEvenOdd() {
  var oddSum = 0;
  var evenSum = 0;
  var num = 0;
  var evenAvg = 0;
  var oddAvg = 0;
  var evenCount = 0;
  var oddCount = 0;

  while (true) {
    num = parseInt(prompt("Enter a number(-1 to exit)"));
    if (num == -1) {
      break;
    }
    if (num % 2 == 0) {
      evenSum  = num;
      evenCount   ;
    } else {
      oddSum  = num;
      oddCount   ;
    }
  }
  
  evenAvg = evenSum / evenCount;
  oddAvg = oddSum / oddCount;
  alert("Sum of all even numbers is: "   evenSum);
  alert("Sum of all odd numbers is: "   oddSum);
  alert("Average of all even numbers is : "   evenAvg);
  alert("Average of all odd numbers is: "   oddAvg);
}

getEvenOdd();  

Ответ №2:

Эти операции делят evenSum или oddSum на последний ввод num .

 evenAvg = evenSum / num; 
oddAvg = oddSum / num; 
  

Вы должны разделить сумму на количество четных или нечетных входных данных.

Ответ №3:

Вместо evenSum / num используйте evenSum/Количество введенных чисел.

Ответ №4:

Как насчет этого решения? Он предназначен для хранения четных и нечетных чисел в oddList и evenList.

 function getEvenOdd() {
var evenAvg = 0;
var oddAvg = 0;

var oddList = [];
var evenList = [];
var num = 0;

while (true) {
    num = parseInt(prompt("Enter a number(-1 to exit)"));
    if (num == -1) {
      break;
    }
    if (num % 2 == 0) {
      evenList.push(parseInt(num));
    } else {
      oddList.push(parseInt(num));
    }

    evenAvg = evenList.reduce((p, c) => p   c, 0) / evenList.length;
    oddAvg = oddList.reduce((p, c) => p   c, 0) / oddList.length;
}
alert("Sum of all even numbers is: "   evenList.length);
alert("Sum of all odd numbers is: "   oddList.length);
alert("Average of all even numbers is : "   evenAvg);
alert("Average of all odd numbers is: "   oddAvg);
}

getEvenOdd();