Задача: массивы, циклы, условные операторы

JavaScriptЗадачи JavaScript

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

Задача

  1. Сформировать для ученика список состоящий из n элементов, каждый элемент которого – это оценка от 2 до 5.
    Подсчитать среднее арифметическое и в соответствии с этим дать определение ученику: отличник, хорошист, троечник, двоечник.
  2. Подсчитать количество каждой полученной оценки.

Решение

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

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

Теперь необходимо провести цикл в котором будет случайным образом генерироваться оценка и помещаться в массив, цикл должен повториться n раз, чтобы набралось определенное ранее количество оценок в массиве:

Также в цикле считается среднее арифметическое между всеми оценками:

К текущей сумме баллов прибавляется текущий балл, который был добавлен строкой выше и который является i-ым элементом массива, поэтому к нему можно обращаться указав его порядковый номер, что мы и делаем.

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

После всего проделанного осталось дать определение ученику:

…и вывести результат:

Вторая часть задачи

Для выполнения второй части задания до цикла необходимо определить переменную, которая будет содержать в себе количества каждой из оценок. Так как оценок несколько, то переменная, хранящая информацию о количестве каждой оценки, должна быть массивом. Мы условимся, что нулевой элемент будет содержать количество двоек, полученных учеником, первый – количество троек и так далее. В начальный момент мы еще не сформировали список оценок ученика, поэтому количество каждой из оценок равно нулю:

Внутри цикла необходимо добавить подсчет количества оценок. Это можно сделать с помощью условного оператора switch:

Но данный подход не рационален, так как если максимальный балл увеличится с пятерки, скажем до 100, придется писать слишком много условий, поэтому мы запишем гораздо проще:

В данном случае мы вычисляем индекс элемента, который надо увеличить на единицу: scores[ i ] - min

scores[ i ] – это только что сгенерированная оценка, например 5, а min – это минимальная оценка, равная 2. Если вычесть из пяти два, получится три, 3 – это порядковый номер элемента в массиве most, который хранит количество пятерок и именно его значение мы увеличиваем на единицу.

После всего этого необходимо вывести информацию о количестве полученных оценок:

Результат выполнения скрипта

Добавить комментарий

Войти с помощью: 

Вступайте в нашу группу в VK

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

ИП Исаенко А.В.

ОГРНИП 317774600344403

ИНН 773770600180