Программы Васи приобрели большую популярность в классе. К сожалению, остальные ученики не очень разбираются в коде и не могут сами менять значения и нужно упростить им пользование. Расширьте программу, которая решала квадратное уравнение и напишите функцию, которая будет принимать коэффициенты a, b и c и выдавать результат.
Разбит на 2 функции: первая вычисляет значения, вторая выдаёт понятное простому человеку описание.
1. Функция getSolutions
- Создайте функцию getSolutions( a, b, c ), которая принимает, соответственно, 3 аргумента - коэффициенты квадратного уравнения.
- Добавьте в функцию переменную D. Запишите туда значение дискриминанта квадратного уравнения, вычисляемого по формуле
D = b² - 4ac
. - В случае, если дискриминант отрицательный, функция getSolutions должна вернуть
{ D: значение_дискриминанта, roots: [] }
. - При дискриминанте, равном нулю:
- Создайте в функции переменную x1 и поместите туда значение единственного корня квадратного уравнения, вычисляемого по формуле
x1 = -b / 2a
. - Верните в качестве результата работы функции getSolutions объект вида
{ D: значение_дискриминанта, roots: [ значение_x1 ] }
.
- Создайте в функции переменную x1 и поместите туда значение единственного корня квадратного уравнения, вычисляемого по формуле
- При дискриминанте больше нуля:
- Создайте переменные x1 и x2 и поместите туда значения корней квадратного уравнения, вычисляемых по формулам
x1 = (-b + √D) / 2a
иx2 = (-b - √D) / 2a
соответственно. - Верните в качестве результата работы функции getSolutions объект вида
{ D: значение_дискриминанта, roots: [ значение_x1, значение_x2 ] }
.
- Создайте переменные x1 и x2 и поместите туда значения корней квадратного уравнения, вычисляемых по формулам
2. Функция showSolutionsMessage
- Создайте функцию showSolutionsMessage( a, b, c ), которая, как и функция getSolutions, принимает 3 аргумента - коэффициенты квадратного уравнения.
- Создайте переменную result, в которую необходимо поместить результат работы getSolutions( a, b, c ).
- Выведите сообщение: «Вычисляем корни квадратного уравнения ax² + bx + c». Значение переданных a, b и c должны присутствовать в формуле.
- Выведите сообщение: «Значение дискриминанта: D». Значение дискриминанта вы можете взять из объекта result.
- В зависимости от полученного в result результата, выведите сообщения:
- При отсутствии корней: «Уравнение не имеет вещественных корней»
- При одном корне: «Уравнение имеет один корень X₁ = значение_корня»
- При двух корнях: «Уравнение имеет два корня. X₁ = значение_корня_1, X₂ = значение_корня_2»
Задача считается выполненной, если вы проверили работу функции showSolutionsMessage для всех трёх случаев (нет вещественных корней, один корень, два корня). Пример:
Пример вызова
Пример выполнения
Теперь Мария Степановна знаменита своей программой на весь район! Есть шанс, что такой журнал пригодится всем школам в городе, но для этого нужно сделать так, чтобы можно было посчитать среднее значение отметки для каждого предмета (их всего 10) и в целом среднюю отметку по всем предметам.
- Создайте функцию getAverageScore(data), которая имеет аргумент data. В нём хранятся данные об оценках по предметам в формате, описанном ниже.
- Создайте вспомогательную функцию getAverageMark(marks), которая будет вычислять среднее значение массива.
- Объект data формируется следующим образом (см. пример ниже):
- Имя свойства - имя предмета.
- Значение - массив оценок ученика. Оценок может быть произвольное количество.
- В качестве результата, необходимо выдать объект со свойствами, обозначающими предмет и дополнительным свойством average, в котором хранится средняя отметка ученика по всем предметам (см. пример ниже).
- При отсутствии оценок, средняя оценка по всем предметам должна быть равна 0.
- Предусмотрите работу программы для случая, когда предметов в объекте data будет менее 10.
Пример вызова
Пример выполнения
Задача со "звездочкой", ее выполнение не влияет на получение допуска до дипломной работы, но принесет много полезного опыта.
Агент 001 смог добыть флешку с секретными досье участников пиратской группировки “Pirates' home place” (PHP). Но вот беда, все данные зашифрованы при помощи шифра. Все, что удалось выяснить, это то, что на флешке записаны JS объекты. У всех есть по два свойства: ‘aaa’ и ‘bbb’. А значения у них либо 0, либо 1. Напишите программу, которая будет получать объект как на флешке, а выдавать такой объект, чтобы агент 001 смог разобраться и поймать негодяев! (Очень жаль, что агент не знает, что ‘aaa’ -- это имя, а ‘bbb’ -- это фамилия. 0 -- это “Родриго”, 1 -- это ”Эмильо”).
- Создайте функцию getPersonData(secretData), которая имеет аргумент secretData, в котором будут храниться данные о пирате.
- Создайте вспомогательную getDecodedValue(secret) функцию, которая по входному числу будет возвращать строку "Родриго" или "Эмильо".
- В качестве результата выдайте объект формата
{ firstName: имя_бандита, lastName: фамилия_бандита }
. - Проверьте функцию getPersonData минимум 4 раза. Создайте ситуации, при которых она выдаст следующие имена и фамилии: Родриго Родриго, Родриго Эмильо, Эмильо Родриго и Эмильо Эмильо.
Пример вызова
Пример выполнения
- браузер;
- редактор кода, например Sublime или Visual Studio Code;
- аккаунт на GitHub (инструкция по регистрации на GitHub);
- система контроля версий Git, установленная локально (инструкция по установке Git);
- запуск всех тестов должен успешно выполнять все тесты:
- Перейти в папку задания.
cd ./2.1-functions
. - Открыть файл
task.js
в вашем редакторе кода и выполнить задание. - Открыть файл
index.html
в вашем браузере и с помощью консоли DevTools убедиться в правильности выводимых результатов. - Добавить файл
task.js
в индекс git с помощью командыgit add %file-path%
, где %file-path% - путь до целевого файла.git add task.js
. - Сделать коммит используя команду
git commit -m '%comment%'
, где %comment% - это произвольный комментарий к вашему коммиту.git commit -m 'first commit functions'
. - Опубликовать код в репозиторий homeworks с помощью команды
git push -u origin master
. - Прислать ссылку на репозиторий через личный кабинет на сайте Нетологии.
Никаких файлов прикреплять не нужно.
Присылать на проверку можно каждую задачу по отдельности или все задачи вместе. Во время проверки по частям ваша домашняя работа будет со статусом "На доработке".
Любые вопросы по решению задач задавайте в Slack-канале.