0 / 0 / 0
Регистрация: 12.05.2022
Сообщений: 4

Написать функцию, которая будет работать как мини-калькулятор

25.05.2022, 17:55. Показов 1987. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ваша задача состоит в том, чтобы написать функцию, которая будет работать как мини-калькулятор математических выражений. Назовите данную функцию getMathResult. getMathResult принимает в себя 1 параметр expression, который является массивом и всегда состоит из 3-х элементов.

1-й и 3-й элементы в массиве expression - это числа, которые могут записывать как тип данных number либо string (например, 100 или ‘100’). 2-й элемент - это математический знак, который является типом данных string. Математический знак может быть исключительно следующими строками: “>”, “<”, “=”, “+”, “-”, “*”, “/”. Если был знак, которого не существует в данной последовательности, то функция getMathResult должна возвращать ошибку в виде строки “Ошибка”.

Примеры результатов функции getMathResult:

JavaScript
1
2
3
4
5
6
7
8
getMathResult(['200', '+', 300]); // 500
getMathResult(['20', '-', '5']); // 15
getMathResult([100, '/', 100]); // 1
getMathResult([2, '-', 2]); // 0
getMathResult(['5', '>', '10']); // false
getMathResult(['5', '<', '10']); // true
getMathResult(['1', '=', 1]); // true
getMathResult(['1', '**', 1]); // 'Ошибка'
Также учтите, что в массив expression иногда может быть передано больше 3-х параметров, и это конечно же неверно. Но если все же такое было сделано, вам необходимо удалить лишние элементы в массиве, которые нельзя преобразовать к числу, которые являются ложными. Если же длина массива expression меньше 3, то функция getMathResult должна возвращать ошибку в виде строки “Ошибка”.

Например, если expression был передан как данный массив:
JavaScript
1
['100', 'hello', 'javascript', , 'help200', '+', 4]
то в итоге он должен быть преобразован к:
JavaScript
1
['100', '+', 4]
Примечание. В решении нельзя использовать eval
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.05.2022, 17:55
Ответы с готовыми решениями:

Написать собственную функцию mymap(function, list), которая будет работать так же как функция map()
У начальника отдела информатизации завелся жук - &quot;bug&quot;, который сломал реальную функцию map, искать жука нет времени, поэтому начальник,...

Написать функцию для dll библиотеки которая будет работать с текстом
Пробовал так #include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;string&gt; #define _DLLAPI extern &quot;C&quot; __declspec(dllexport) ...

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

9
191 / 55 / 18
Регистрация: 22.08.2021
Сообщений: 99
25.05.2022, 22:50
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function getMathResult (args) {
    if (!Array.isArray(args) || args.length < 3) {
        return 'Ошибка';
    }
 
    let operators = ['>', '<', '=', '+', '-', '*', '/'];
    args = args.filter(a => operators.some(o => o === a) || !isNaN(a));
 
    if (args.length !== 3 || isNaN(args[0]) || isNaN(args[2]) || !operators.some(o => o === args[1])) {
        return 'Ошибка';
    }
 
    return eval(args.join(' '));
 
}
0
0 / 0 / 0
Регистрация: 12.05.2022
Сообщений: 4
29.05.2022, 13:00  [ТС]
А как данную задачу сделать через цикл for? и не использовать метод Примечание. В решении нельзя использовать eval
0
 Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
30.05.2022, 10:03
Цитата Сообщение от kolomrs Посмотреть сообщение
А как данную задачу сделать через цикл for?
А для чего здесь нужен цикл?
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
30.05.2022, 10:10
Что ожидается на выходе при таких входных параметрах?
JavaScript
1
2
getMathResult([10, '+', '-', 5]); // ???
getMathResult([10, '+', 3, 5]); // ???
0
 Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
30.05.2022, 10:27
Цитата Сообщение от kolomrs Посмотреть сообщение
Например, если expression был передан как данный массив:
['100', 'hello', 'javascript', , 'help200', '+', 4]
А если был передан такой массив:
JavaScript
1
['100', '200', '300', , 'help200', '+', 4]
Какое из этих значений '100', '200', '300' должно участвовать в сложении?

Добавлено через 8 минут
Цитата Сообщение от kolomrs Посмотреть сообщение
1 параметр expression, который является массивом и всегда состоит из 3-х элементов.
Лучше бы на этом условии и остановится.
0
191 / 55 / 18
Регистрация: 22.08.2021
Сообщений: 99
30.05.2022, 11:42
Цитата Сообщение от kolomrs Посмотреть сообщение
Примечание. В решении нельзя использовать eval
Какая то совершенно тупая задача. Явно не для продвинутых, но, я не знаю, как кроме того, чтобы использовать eval, можно ее решить по простому. Через конструктор функции только

JavaScript
1
return new Function('return ' + args.join(' '))();
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
30.05.2022, 11:58
Jsuser, это типовая учебная задача на конструкцию switch ... case ...
0
191 / 55 / 18
Регистрация: 22.08.2021
Сообщений: 99
30.05.2022, 13:47
Balanaar, я правильно понимаю, что должен быть индусский код?

JavaScript
1
2
3
4
5
6
7
let r = 0;
switch (args[1]) {
    case '+':
        r = args[0] + args [2];
    case '-':
        r = args[0] - args [2];
}
1
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
30.05.2022, 14:16
Jsuser, похоже на то

Добавлено через 27 секунд
Только про break не забываем, конечно же.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.05.2022, 14:16
Помогаю со студенческими работами здесь

Решение системы уравнений: написать функцию, которая как параметр будет использовать другую функцию
Ребята помогите разобраться с указателем на функцию! у меня решается система ДУ методом Рунге_кутта. я хочу написать функцию, которая...

Как написать функцию которая будет заменять prompt?
При вызове этой функции должно показываться модальное окно с заголовком и текстом, а также с полем для ввода текста (input...

Как написать функцию которая будет заменять confirm?
При вызове этой функции надо показывать все то же самое (модальное окно с заголовком и текстом), но две кнопки - OK и Cancel. ...

Как написать Функцию, которая будет менять местами два числа
Подскажите, как написать Функцию, которая будет менять местами два числа , слева и справа от центрального Ранее был выведен массив

Как написать функцию, которая будет менять имя созданного объекта
Функция changeClas изменяет класс ученика,подскажите,пожалуйста,как написать подобную функцию,которая будет менять имя созданного объекта,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru