С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 12.05.2022
Сообщений: 4

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

25.05.2022, 17:55. Показов 1910. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru