Аватар для Satansoft
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742

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

02.02.2016, 23:04. Показов 1061. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru