Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
10 / 10 / 1
Регистрация: 20.08.2016
Сообщений: 243

Создать расширяемый калькулятор

06.10.2025, 13:33. Показов 954. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создайте функцию конструктор Calculator, которая создаёт «расширяемые» объекты калькулятора.

Во-первых, реализуйте метод calculate(str), который принимает строку типа "1 + 2" в формате «ЧИСЛО оператор ЧИСЛО» (разделено пробелами) и возвращает результат. Метод должен понимать плюс + и минус -.

Пример использования:

JavaScript
1
2
3
let calc = new Calculator;
 
alert( calc.calculate("3 + 7") ); // 10
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function Calculator() {
    this.calculate = function(str) {
        let arr = str.split(' ');
        for (let i = 0; i < arr.length; i++) {
                arr[i] = +arr[i];
                
        }
        return arr[0]arr[1]arr[2];
    }
}
 
let calc = new Calculator;
 
alert( calc.calculate("3 + 7") ); // 10
Где ошибка?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.10.2025, 13:33
Ответы с готовыми решениями:

Как можно создать калькулятор
На этом сайте Ссылка Есть калькулятор, как можно создать такой же, или похожий с чего начать ? ...

Как создать калькулятор услуг?
можете подсказать как сделать такую таблицу:...

Создать калькулятор подсчета стоимости
Ребята, может у кого-то есть калькулятор, для подсчета стоимости окон. Знания скудные в JS и PHP,...

10
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3823 / 1661 / 428
Регистрация: 14.03.2022
Сообщений: 4,168
06.10.2025, 14:17
Цитата Сообщение от sozdatel Посмотреть сообщение
Где ошибка?
Так в консоль же написали - вот в этой строке синтаксическая ошибка
Цитата Сообщение от sozdatel Посмотреть сообщение
JavaScript
1
return arr[0]arr[1]arr[2];
Какой смысл ты "вложил" вот в "это" arr[0]arr[1]arr[2]?

Добавлено через 11 минут
Цитата Сообщение от sozdatel Посмотреть сообщение
JavaScript
1
2
3
for (let i = 0; i < arr.length; i++) {
   arr[i] = +arr[i];
}
Оно и вот это - тоже какая-то ерунда...

Вот, как вариант...

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function Calculator() {
    this.opr = {
        '+': (a, b) => +a + +b
    }
    this.calculate = function(str) {
        const [a, o, b] = str.split(' ');
        return this.opr[o] ? this.opr[o](a, b) : NaN;
    }
}
 
const calc = new Calculator;
alert( calc.calculate("3 + 7") ); 
calc.opr['-'] = (a, b) => a - b
alert( calc.calculate("3 - 7") );
Даже расширять можно.
0
10 / 10 / 1
Регистрация: 20.08.2016
Сообщений: 243
06.10.2025, 15:01  [ТС]
Цитата Сообщение от krvsa Посмотреть сообщение
Какой смысл ты "вложил" вот в "это" arr[0]arr[1]arr[2]?
А как написать? Получается 3 + 7 и, по-моему, должно возвращаться в результате 10. Почему я не могу так написать?

Цитата Сообщение от krvsa Посмотреть сообщение
Оно и вот это - тоже какая-то ерунда...
А здесь что не так?
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3823 / 1661 / 428
Регистрация: 14.03.2022
Сообщений: 4,168
06.10.2025, 15:13
Цитата Сообщение от sozdatel Посмотреть сообщение
А здесь что не так?
Выведи в консоль свой массив и посмотри что получилось...

Цитата Сообщение от sozdatel Посмотреть сообщение
Почему я не могу так написать?
Писать нужно, как минимум, синтаксически правильно.

arr[0], arr[1] и arr[2] это некие переменные из массива... Условно назовем их a, b, и c...
Так вот ты написал следующее - abc. Только "с массивом" это смотрится еще нелепее.

Как такое вообще можно написать - я х/з.
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
06.10.2025, 15:20
Цитата Сообщение от sozdatel Посмотреть сообщение
А как написать? Получается 3 + 7 и, по-моему, должно возвращаться в результате 10. Почему я не могу так написать?
Это слишком гениально.. движок такое не понимает.

Цитата Сообщение от sozdatel Посмотреть сообщение
А здесь что не так?
Как минимум + затерли.

Добавлено через 5 минут
JavaScript
1
2
3
4
5
function Calculator() {
    this.calculate = function(str) {
        return eval(str);
    }
}
0
100 / 96 / 17
Регистрация: 05.08.2021
Сообщений: 467
06.10.2025, 15:30
Я тут выкладывал свой калькулятор. Пусть и не все оценили его по достоинству, но подсчитывает он правильно.
Оцените калькулятор с GUI
Парсинг строки в математическое выражение и его подсчет начинается со строки 96 по 200-какую-то.
Там для того что посложнее чем "3 + 7" соответственно дело чуть посложнее. Обратная польская нотация
0
10 / 10 / 1
Регистрация: 20.08.2016
Сообщений: 243
06.10.2025, 16:01  [ТС]
Цитата Сообщение от krvsa Посмотреть сообщение
Выведи в консоль свой массив и посмотри что получилось...
JavaScript
1
2
3
4
5
6
let str = '3 + 7';
        let arr = str.split(' ');
        for (let i = 0; i < arr.length; i++) {
                arr[i] = +arr[i];
                
        }
Так? 7 получилось. Хоть и непонятно, почему. Короче, бред галимый этот ваш js. Пока поймёшь что к чему, с ума сойти можно. И вы пишите, так неправильно, это чушь, и свой гениальный код потом, но мне не дойти до него, понимаете? Я хочу чтоб в моём коде указали ошибки, а вы вместо этого свой наворачиваете и гнобите ещё в каждом посте. Уж лучше вообще ничего не пишите, гений. Вы меня утомили, спасибо за старания.
0
Эксперт .NET
 Аватар для Usaga
14126 / 9345 / 1350
Регистрация: 21.01.2016
Сообщений: 35,110
06.10.2025, 16:03
Цитата Сообщение от sozdatel Посмотреть сообщение
но мне не дойти до него, понимаете?
А учебник ты открыть не пробовал? Или это слишком неочевидное решение?
0
100 / 96 / 17
Регистрация: 05.08.2021
Сообщений: 467
06.10.2025, 16:12
Цитата Сообщение от sozdatel Посмотреть сообщение
бред галимый этот ваш js
Все претензии не лично к JS, а в целом к информатике. JS как и любой язык просто инструмент для записи алгоритмов. Название алгоритма для решения математических выражений я уже упомянул. Обратная польская нотация
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3823 / 1661 / 428
Регистрация: 14.03.2022
Сообщений: 4,168
06.10.2025, 16:24
Цитата Сообщение от sozdatel Посмотреть сообщение
Короче, бред галимый этот ваш js.
Чисто басня "Лисица и виноград"...
https://azbyka.ru/fiction/basnya-lisica-i-vinograd

Могу тебя огорчить - ни один ЯП не будет работать "как ты его понимаешь". Они все работают "по своим понятиям".

Добавлено через 1 минуту
Цитата Сообщение от sozdatel Посмотреть сообщение
Уж лучше вообще ничего не пишите
Ок.
Главное не забыть что это именно ты.
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
06.10.2025, 16:33
Лучший ответ Сообщение было отмечено sozdatel как решение

Решение

Цитата Сообщение от sozdatel Посмотреть сообщение
Я хочу чтоб в моём коде указали ошибки
Разве не указали? Вы написали код, который не понимает интерпретатор, я его тоже его не понял, пока вы не объяснили, что это типа 7 + 3..

В принципе выше уже указали решение, что не видел смысла, что-то добавлять. Но раз вы ничего не поняли попытаюсь разъяснить на вашем коде.

Вам нужно спарить строку, потом сложить переменные.

JavaScript
1
2
3
4
5
6
7
8
9
10
function Calculator() {
    this.calculate = function(str) {
        let arr = str.split(' ');
        for (let i = 0; i < arr.length; i++) {
                arr[i] = +arr[i];
                
        }
        return arr[0] + arr[2];
    }
}
Но это будет работать только для "+", а нужно предусмотреть и другие операторы

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function Calculator() {
    this.calculate = function(str) {
        let arr = str.split(' ');
        let operator = arr[1];
        let a = +arr[0];
        let b = +arr[2];
 
        if (operator === '+') {
            return a + b;
        }
 
        if (operator === '-') {
            return a - b;
        }
 
        // и т.д.
 
        return NaN;
    }
}
Можно использовать switch

JavaScript
1
2
3
4
switch (operator) {
    case '+' : return a + b;
    case '-': return a - b;
}
Либо использовать объект с функциями..

JavaScript
1
2
3
4
let operations = {
    "+": (a,b) => a + b,
    "-": (a,b) => a - b,
}
Тут у нас как-бы получается список функций, которую мы можем выбрать по ключу, и ее вызвать

JavaScript
1
2
3
4
5
operations["+"](a, b);
 
//либо
 
operations[operator](a, b);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.10.2025, 16:33
Помогаю со студенческими работами здесь

Создать калькулятор
Кроме html какие языки понадобятся при создания калькулятора по расчету стоимость натяжных...

Создать калькулятор по данным в задаче
Компания «Компьютеры и оргтехника» занимается сборкой и продажей компьютеров. Для каждого...

Как создать подобный калькулятор
Как создать подобный калькулятор Вот такой

Как создать особый калькулятор
Здравствуйте! У вас наверняка больше опыта, поэтому обращаюсь именно к вам. Нужно подобие...

Создать калькулятор расчета стоимости автомобильных кресел
Как сделать такой калькулятор. При выборе нужных элементов как на сайте avtobm.ru


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
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
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru