Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для Satansoft
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742

Взаимодействие чисел с операторами

02.02.2016, 23:04. Показов 1053. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При написании, столкнулся с тем, что нужно оператор передать строкой, а в "пункте приема" выполнить как оператор, но поезд аля:

JavaScript
1
2
z = "+";
parseFloat(n1) + z + parseFloat(n2);
не подходит, как это провернуть?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.02.2016, 23:04
Ответы с готовыми решениями:

написать фильтрацию массива чисел битовыми операторами
Переменная типа Number(целое число) содержит в себе информацию про юзера: 1.пол (м/ж) 2.семейное положение (женат / не женат) ...

Класс с операторами
#pragma once #include <string> class Set { private: int length = 0, capacity = 0; std::string *items = 0; void...

Работа с операторами
Как многие идущие к своей цели програмисты я встретился с таким делом как операторы. Вот для примера факториал. Факториал числа это...

10
38 / 38 / 30
Регистрация: 07.04.2014
Сообщений: 219
02.02.2016, 23:13
Может через switch ?

JavaScript
1
2
3
4
switch(z) {
     case "+":
          parseFloat(n1) + parseFloat(n2);
}
По-другому реализовать непонятно как.
Да и вообще странно, чтобы передавать оператор строкой.
0
 Аватар для Satansoft
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
02.02.2016, 23:19  [ТС]
Цитата Сообщение от Spiderman5 Посмотреть сообщение
Может через switch ?
Таких приемов в достатке (switch, if...), посредством анализа полученного и выполнения в соответствии, мне интересно, можно ли строку превратить в оператор?
Он из инпута передаётся, как параметр функции в виде строки.
0
Хитрая блондиночка $)
 Аватар для Hikari
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
02.02.2016, 23:26
Цитата Сообщение от Satansoft Посмотреть сообщение
можно ли строку превратить в оператор?
Есть же eval(). Передаешь ему строку, он ее выполняет:
JavaScript
1
2
z = "+";
v=eval('parseFloat(n1)' + z + 'parseFloat(n2)');
0
 Аватар для Satansoft
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
02.02.2016, 23:28  [ТС]
Цитата Сообщение от Hikari Посмотреть сообщение
Есть же eval(). Передаешь ему строку, он ее выполняет
Он то есть, но низя.
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
03.02.2016, 07:22
Цитата Сообщение от Satansoft Посмотреть сообщение
Он то есть, но низя.
Я бы тоже проверку использовал.
Цитата Сообщение от Satansoft Посмотреть сообщение
можно ли строку превратить в оператор?
Вроде как низя!, только проверка или евал.
1
Хитрая блондиночка $)
 Аватар для Hikari
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
03.02.2016, 09:54
Цитата Сообщение от Satansoft Посмотреть сообщение
Он то есть, но низя.
Боишься уязвимость открыть?
0
 Аватар для Satansoft
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
03.02.2016, 11:36  [ТС]
Цитата Сообщение от Hikari Посмотреть сообщение
Боишься уязвимость открыть?
Я когда его применял, на меня смотрели как на ... >.< И намекали, что бы переделывал, а это, между прочим, разрушило всю концепцию реализации.

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

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function take(num)
{       
    if(flag)
    {
        Output.value = num;
        flag = false;
    }
    else
    {
        if(Output.value == "0")
            Output.value = num;
        else
            Output.value += num;
    }   
}
А вот с реализацией операторов завис и возможность преобразовании строки обратно в оператор здорово бы мне помогло.
0
Хитрая блондиночка $)
 Аватар для Hikari
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
03.02.2016, 11:42
Цитата Сообщение от Satansoft Посмотреть сообщение
Я когда его применял, на меня как на блондинку смотрели >.<
Какое счастье что я уже блондинка
мне можно

А вообще я не очень понимаю эту истерию по поводу паранои. Как будто все сразу рванутся взламывать именно это место. Проблема не в eval() проблема в головах.
1
 Аватар для Satansoft
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
03.02.2016, 11:47  [ТС]
Цитата Сообщение от Hikari Посмотреть сообщение
Как будто все сразу рванутся взламывать именно это место.
Дело действительно не в функции, а в самом легком пути...
0
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
04.02.2016, 13:57
Лучший ответ Сообщение было отмечено Satansoft как решение

Решение

Satansoft, eval можно и заменить. Лучший вариант в вашем случае это безопасный аналог eval:
JavaScript
1
2
3
4
function calculate(str) {
  str = "return " + str;
  return new Function(str)()
}
Если так важна безопасность и через калькулятор могут украсть коды запуска ядерных ракет, можно регвыражением заменить все символы, неразрешенные в калькуляторе на пустую строку. Атаковать цифрами, точками и операторами сложновато.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.02.2016, 13:57
Помогаю со студенческими работами здесь

Проблема с операторами
Добрый день Имею такое задание: - один из классов должен содержать статическую функцию и статический атрибут; - ссылки на все...

Работа с операторами(+,-) в С++
Доброго времени суток, имеются 2 вектора типа int, например: vector&lt;int&gt; v1 {1,2,3,4}; vector&lt;int&gt;v2 {5, 6, 7, 8}; Необходимо...

Проблема с операторами
начинаю работаю на VC10 ввожу #include &lt;iostream.h&gt; почеркивает и пишет, что не удается открыть источник файла.... ввожу ...

помогите с операторами while и for
есть программа, и мне нужно чтоб выводило информацию о файле во время оператора while. все работает, если оставить один if и к нему...

работа с операторами while и do-while
Есть такая проблема: написал код с помощью оператора do-while: { float x, a, s=0; int f, i, k=1; ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
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 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты 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. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru