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

Работа с массивами через функцию

28.11.2022, 14:06. Показов 2518. Ответов 7

Студворк — интернет-сервис помощи студентам
Не получается разобраться с решением следующих задач. При объяснении темы преподаватель показывал очень простые примеры (типа суммы двух чисел), поэтому сложновато понять, как работать с массивами и еще это через функции

*Напишите функцию getArrayParams(arr), которая получает на вход массив чисел от -100 до 100 и возвращает минимальное, максимальное и среднее арифметическое значения массива.

1. Создайте функцию, которая принимает на ввод массив.

2. Внутри функции задайте 3 переменных min, max, sum, присвоив им некоторые первоначальные значения.

3.Пройдите по массиву циклом for либо while и для каждого элемента определите:
- если элемент больше предыдущего максимума, то максимум становится равен элементу;
- если элемент меньше предыдущего минимума, то минимум становится равен элементу;
- добавляем элемент к сумме sum для вычисления среднего.

4. После прохождения цикла функция должна возвращать объект вида: {max:..., min: ..., avg:...}, то есть минимальное, максимальное и среднее значения. Чтобы вычислить среднее, нужно сумму элементов поделить на их количество. Среднее значение нужно округлить до двух знаков после запятой. Для округления воспользуйтесь toFixed. Заметьте, toFixed возвращает string. Так как вам необходимо вернуть число (number), то потребуется дополнительное преобразование значения к числу.*

По подсказкам вот что у меня получилось (код ниже)
1. Верно ли составлен
2. Как посчитать среднее правильно? Я знаю, что сумма делится на количество, но не могу понять, как тут это сделать


JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function getArrayParams(arr) {
  let min, max, sum, avg;
 
  min = Infinity;
  max = -Infinity;
 
    for (let i = -100; i < arr.lenght; i += 1) {
      if((arr[i]) < min){
        min = arr[i]; 
     } else {
        max = arr[i];
    }
    sum += arr[i];
 
    }
 
  return { min: min, max: max, avg: avg };
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.11.2022, 14:06
Ответы с готовыми решениями:

Работа с двумерными динамическими массивами через функцию
Задание такое при нажатии button1 выводится двумерный массив размерностью m x n, при нажатии button 2, массив модифицируется таким образом:...

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

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

7
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,189
28.11.2022, 14:48
Цитата Сообщение от Anna_Batuk Посмотреть сообщение
JavaScript
1
2
3
let sum
// ...
sum += arr[i]
Для правильного расчета суммы переменную нужно не только объявить, но и определить
JavaScript
1
2
3
let sum = 0
// ...
sum += arr[i]
В твоем варианте у тебя sum всегда будет NaN
Цитата Сообщение от Anna_Batuk Посмотреть сообщение
Как посчитать среднее правильно? Я знаю, что сумма делится на количество, но не могу понять, как тут это сделать
Количество - это количество элементов в массиве - arr.lenght.
0
0 / 0 / 0
Регистрация: 19.01.2015
Сообщений: 62
Записей в блоге: 1
29.11.2022, 14:29  [ТС]
Вот еще исправила. А max и min верно нашла? Просто пока не работает код. Где еще не увидела ошибку:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function getArrayParams(arr) {
  let min, max, sum, avg;
 
  min = Infinity;
  max = -Infinity;
  sum = 0;
    for (let i = 0; i < arr.lenght; i += 1) {
      if(arr[i] < min){
        min = arr[i]; 
     } else {
        max = arr[i];
      }
      sum += arr[i];
      setAvg((sum / arr.length).toFixed(2));
      console.log(getArrayParams());
    }
   
  return { min: min, max: max, avg: avg };
}
В ответе примерно так должно быть:

JavaScript
1
getArrayParams([-99, 99, 10]) // { min: -99, max: 99, avg: 3.33 }
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,189
29.11.2022, 15:12
Цитата Сообщение от Anna_Batuk Посмотреть сообщение
JavaScript
1
2
3
4
5
if(arr[i] < min){
        min = arr[i]; 
     } else {
        max = arr[i];
     
}
Это ошибочное предположение...
Значения min и max между собой никак не связаны.
Они считаются раздельно. Для их расчета есть даже специальный объект с методами...
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function getArrayParams(arr) {
    let avg;
    let min = Infinity;
    let max = -Infinity;
    let sum = 0;
    for (let i = 0; i < arr.length; i++) {
        min = Math.min(min, arr[i])
        max = Math.max(max, arr[i])
        sum += arr[i];
    }
    avg = +(sum / arr.length).toFixed(2)
    return { min, max, avg };
}
 
console.log(getArrayParams([-99, 99, 10]))
Цитата Сообщение от Anna_Batuk Посмотреть сообщение
пока не работает код
Цитата Сообщение от Anna_Batuk Посмотреть сообщение
JavaScript
1
arr.lenght
Сличи по буквам с моим вариантом.
1
 Аватар для klyapa
3503 / 1267 / 429
Регистрация: 24.07.2016
Сообщений: 1,890
29.11.2022, 16:38
Лучший ответ Сообщение было отмечено Anna_Batuk как решение

Решение

... а если с условиями, то так...
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function getArrayParams(arr) {
    let min = Infinity,
        max = -Infinity,
        avg = null,
        sum = 0;
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] < min) min = arr[i]; 
        else if (arr[i] > max) max = arr[i];
        sum += arr[i];
    }
    avg = sum / arr.length;
    return { min, max, avg };
}
 
// 2.
const getArrayParams = a => (
    { min: Math.min(...a), max: Math.max(...a), avg: a.reduce((x, y) => x + y) / a.length }
);
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,189
29.11.2022, 16:45
Лучший ответ Сообщение было отмечено Anna_Batuk как решение

Решение

Цитата Сообщение от klyapa Посмотреть сообщение
JavaScript
1
2
if (arr[i] < min) min = arr[i]; 
        else if (arr[i] > max) max = arr[i];
Я бы вообще так сделал
JavaScript
1
2
if (arr[i] < min) min = arr[i]; 
if (arr[i] > max) max = arr[i];
1
 Аватар для klyapa
3503 / 1267 / 429
Регистрация: 24.07.2016
Сообщений: 1,890
29.11.2022, 17:07
Лучший ответ Сообщение было отмечено Anna_Batuk как решение

Решение

Цитата Сообщение от krvsa Посмотреть сообщение
Я бы вообще так сделал
JavaScript
1
2
if (arr[i] < min) min = arr[i]; 
if (arr[i] > max) max = arr[i];
Была сначала эта версия, но чтоб лишний раз интерпретатор не заглядывал в ложное условие - сунул else перед if )

Добавлено через 3 минуты
p/s ... а так да, с двумя if-ами код красивше и ровнее получается

Добавлено через 11 минут
krvsa, всё правильно. else нужно убрать, ибо при объявленных Infinity, -Infinity, и раскладе массива [-10, -98, -99], на выхлопе будет {min: -99, max: -Infinity, avg: -69}
0
0 / 0 / 0
Регистрация: 19.01.2015
Сообщений: 62
Записей в блоге: 1
29.11.2022, 17:34  [ТС]
Все исправила. Спасибо!
Вот как написала и все работает

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function getArrayParams(arr) {
  let min, max, sum, avg;
 
  min = Infinity;
  max = -Infinity;
  sum = 0;
    for (let i = 0; i < arr.length; i += 1) {
      if(arr[i] < min)
        min = arr[i]; 
     
     if(arr[i] > max)
        max = arr[i];
      
      sum += arr[i];
    
    }
    avg = +(sum / arr.length).toFixed(2)
    
    
  return { min: min, max: max, avg: avg };
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.11.2022, 17:34
Помогаю со студенческими работами здесь

Работа с массивами через UserForm
Здравствуйте, мне нужен пример. Главное что бы макрос работал с массивом(и) и имел форму. Если есть у кого что то похожее скиньте. Буду...

Работа с Массивами: реализация списка через массив?
В общем: Можно ли записать в ячейку массива больше одного символа? Можно ли с помощью массива сделать к примеру список дел, т.е. я...

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

Работа с двумерными массивами при адресации элементов массива через указатели
1.Задана квадратная матрица порядка N. Вычислить сумму отрицательных элементов, лежащих ниже главной диагонали. Программа должна...

Работа с массивами через указатели, адреса. Функция сортировки выбором любого массива
Надо было написать программу сортировки с использованием функций из учебника. соответственно Compare, Find_minimum_index, Swap и SwapChar....


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru