Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 13.10.2020
Сообщений: 5

Написать программу, вычисляющую среднее арифметическое элементов массива без учета минимального и максимального.

27.10.2020, 19:52. Показов 3615. Ответов 9

Студворк — интернет-сервис помощи студентам
Помогите создать программку которая будет вычислять среднее арифметическое без учета максимального и минимального элемента с помощью метода. У меня получилось найти среднее арифметическое, но я не могу указать, чтобы не учитывалось максимальное и минимальное значение.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
let arr = [1,10,15,8,4,5,29,30];
let newArr = [];
for (let i=0; i < arr.length; i++) {
  let sqr = arr[i] * arr[i]
  newArr.push(sqr);
}
alert (newArr);
 
for (let j = 0, sum = 0; j < newArr.length; j++) {
  sum += newArr[j]
}
alert(sum);
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.10.2020, 19:52
Ответы с готовыми решениями:

Написать программу, которая вычисляет среднее арифметическое элементов массива без учета макси-мального
Вот, что получилось. #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int main() { ...

Среднее арифметическое элементов массива без учета минимального и максимального элементов
Написать программу, которая вычисляет среднее арифметическое элементов массива без учета минимального и максимального элементов массива....

Найти среднее арифметическое элементов массива без учета минимального и максимального элементов
Написать программу, которая вычисляет среднее арифметическое элементов массива без учета минимального и максимального элементов....

9
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
27.10.2020, 20:02
Вообще-то приведённая программка вычисляет не среднее арифметическое, а сумму квадратов элементов массива...
1
0 / 0 / 0
Регистрация: 13.10.2020
Сообщений: 5
27.10.2020, 23:36  [ТС]
Спасибо, что сказали, я не тот код кинул
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
28.10.2020, 09:05
Zybenko, находите минимум и максимум и в цикле считаете сумму элементов и их количество, проверяя на минимум и максимум. Зная сумму и количество подсчитанных элементов вычисляете среднее арифметическое.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
const foo = ary => {
  /* let min = ary[0];
   * let max = ary[0];
   * for (let i = 1; i < ary.length; i++) {
   *   if (ary[i] > max) max = ary[i];
   *   if (ary[i] < min) min = ary[i];
   * }
   */
 
  const min = Math.min(...ary);
  const max = Math.max(...ary);
 
  let sum = 0;
  let count = 0;
 
  for (let i = 0; i < ary.length; i++) {
    if (ary[i] === max || ary[i] === min) continue;
 
    sum += ary[i];
    count++;
  }
 
  // WARN: divizion by zero
  // TODO: check count !== 0
  return sum / count;
}
 
console.log(foo([1, 10, 15, 8, 4, 5, 29, 30])); //=> 11.8(3)
0
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
28.10.2020, 09:39
Или так:
JavaScript
1
2
3
4
5
6
7
8
9
10
function foo(ary) {
  const arr = ary.slice();
  return (
    arr
      .sort((a, b) => a - b)
      .slice(1, arr.length - 1)
      .reduce((a, b) => a + b) /
    (arr.length - 2)
  );
}
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
28.10.2020, 10:01
Цитата Сообщение от DrType Посмотреть сообщение
Или так
Тоже сначала подумал про сортировку. Но что если максимальных или минимальных элементов несколько?
1
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
28.10.2020, 10:12
Ох, верно. Попробую ещё так:
JavaScript
1
2
3
4
5
6
function foo(ary) {
  const arr = ary
    .slice()
    .filter((e) => ![Math.max(...ary), Math.min(...ary)].includes(e));
  return arr.length ? arr.reduce((a, b) => a + b) / arr.length : 0;
}
Хотя решение с циклами в данном случае более здоровое.
1
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
28.10.2020, 10:19
Лучший ответ Сообщение было отмечено Zybenko как решение

Решение

Здравствуйте.
Переходим на правильное оцикливание.
Затем вторым способом дважды отредюсим:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
let arr = [1, 10, 15, 8, 4, 5, 29, 30];
 
function average(arr) {
    let min = arr[0],
        max = min,
        sum = 0,
        count = 0;
    for (let i = 1; i < arr.length; i++) {
        let element = arr[i];
        if (max < element) max = element;
        else if (min > element) min = element;
    }
    for (let i = 1; i < arr.length; i++) {
        let element = arr[i];
        if (element !== min && element !== max) {
            sum += element;
            ++count;
        }
    }
    let result = count ? sum / count : undefined;
    return result;
}
 
alert(average(arr));
 
function average2(arr) {
    let [min, max] = arr.reduce((a, b) => {
        if (a[1] < b) a[1] = b;
        else if (a[0] > b) a[0] = b;
        return a;
    }, [arr[0], arr[0]]);
    let [count, sum] = arr.reduce((a, b) => {
        if (b !== min && b !== max) {
            a[1] += b;
            ++a[0];
        }
        return a;
    }, [0, 0]);
    return count ? sum / count : undefined;;
}
alert("Результат с помощью метода reduce(): " + average2(arr));
Добавлено через 1 минуту
---
Если элементов нет, то тут возвращается undefined.
Можно ещё возвращать null, как в SQL, или ошибку.
1
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
28.10.2020, 10:24
DrType, я про фильтр совсем забыл.
JavaScript
1
2
3
4
5
6
7
8
9
const foo = ary => {
  const min = Math.min(...ary);
  const max = Math.max(...ary);
  
  const filtered = ary.filter(el => el !== max && el !== min);
  const sum = filtered.reduce((a, b) => a + b, 0);
 
  return filtered.length ? sum / filtered.length : 0;
}
1
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
28.10.2020, 11:36
У меня в циклах в ответе Написать программу, вычисляющую среднее арифметическое элементов массива без учета минимального и максимального. осталась в строке №13 мелкая ошибка.
Там во втором цикле надо начинать обход с i = 0. Скопипастил с первого цикла.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.10.2020, 11:36
Помогаю со студенческими работами здесь

Найти среднее арифметическое элементов массива без учета минимального и максимального элементов
Помогите пожалуйста. В задаче неправильно считает среднее арифметическое чисел массива. Текст задания: Написать программу, которая...

Найти среднее арифметическое элементов массива без учёта максимального и минимального элементов
Нужно найти среднее арифметическое элементов массива без учёта максимального и минимального элементов. // Middle arithmetic without...

Составит пограмму, которая вычисляет среднее арифметическое максимального и минимального значения элементов одномерного массива Х
Составит пограмму, которая вычисляет среднее арифметическое максимального и минимального значения элементов одномерного массива Х, который...

Найти среднее арифметическое элементов массива без учета минимального и максимального элементов массива
Доброго времени суток! Помогите написать программу, которая вычисляет среднее арифметическое элементов массива без учета минимального и...

Вычислить среднее арифметическое элементов массива без учета минимального и максимального элементов массива
Написать программу, которая вычисляет среднее арифметическое элементов массива без учета минимального и максимального элементов массива.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru