#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();