Рубрики
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, который хранит количество пятерок и именно его значение мы увеличиваем на единицу.

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

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

Автор: Алексей Исаенко

Работаю full-stack разработчиком, специализируюсь на WordPress. За время трудовой деятельности сделал несколько полезных для пользователей вещей.
Помимо этого занимаюсь преподаванием - веду курсы по web-разработке.

Нравится лето, решать новые задачи в разработке, WordPress и Яндекс.

Загрузка комментариев...