Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/30: Рейтинг темы: голосов - 30, средняя оценка - 4.50
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
1

Выполнить строку

27.06.2009, 13:13. Показов 6053. Ответов 35
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, подскажите наиболее простой вариант решения проблемы.
Есть строка типа
(65+24)+f1(53+13)+f1(110-42)+f1(s1((35462+510)/17)+19)+(-s1((112-48))+9)+f1(s1((60615-115)/5)-2)+f1(s1((10010-10))-34)+(-s1((117-36))+12)+f1(66+18)+f1(s1((118365+450)/15)-17)+f1(s1((7585-16))+19)+f1(99-25)+f1(s1((30236+40)/4)-22)+f1(38+36)+f1(s1((3571+29))+39)+f1(s1((311780+720)/20)-38)+f1(s1((79209-117)/13)+22)
Нужно ее выполнить
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.06.2009, 13:13
Ответы с готовыми решениями:

Выполнить код, записанный в строку
... (как execute_string() в Game Maker) - например, float a = f (b);, и допустим b = "return 1 /...

Ввести символьную строку. Выполнить переворот каждого слова в строке
Ввести символьную строку. Выполнить переворот каждого слова в строке (заменив первую букву с...

Как запустить командную строку, выполнить команду и считать полученные данные
Добрый вечер. Подскажите как запустить командную строку, выполнить команду и считать полученные...

Выполнить бегущую строку
3. Дано слово (например, «Внимание!»). Выполнить бегущую строку (движение - справа до конца экрана)

35
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
28.06.2009, 23:13 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от odip Посмотреть сообщение
Заумные советы типа сгенерировать C-ный файл, потом его откомпилировать - это IMHO не лучше
Это не советы, а попытка съязвить и показать несостоятельность ваших предложений
0
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
28.06.2009, 23:27 22
Не очень понятно зачем вам это вообще делать.
Вроде как наша общая задача - помочь автору ?

И на самом деле это трудно сделать ( в смысле показать несостоятельность ).
IMHО проще использовать скачать и изучить готовый lua, чем самому делать обратную польскую запись - чисто по времени будет дольше.

И потом в условии задачи не указано, что все нужно написать самому и нельзя использовать посторонние средства.
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
29.06.2009, 00:09 23
Цитата Сообщение от odip Посмотреть сообщение
И потом в условии задачи не указано, что все нужно написать самому и нельзя использовать посторонние средства.
Я более, чем уверен, что это задание из института. Хотя, конечно, могу и ошибаться. Собственно, с этой позиции я и подходил.

По поводу того, чтобы помочь автору - по-хорошему для начала надо было бы спросить, с какой целью ему это нужно, а не советовать бог невесть что. Это не претензия к тебе, это упрёк нам всем
0
1856 / 713 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
29.06.2009, 12:53 24
TGrey[WoLf] скажи, пожалуйста, что из себя представляют функции f1,s1?
0
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
29.06.2009, 13:37  [ТС] 25
С Perl я немного работал давно, с lua нет.
Данные действительно внешние и по ним необходимо построить строку из 18 символов.
f1 - возвращает символ
s1 - возвращает корень числа.
Задача не из института. Просто решил сделать для себя.

В общем дошло до того, как я говорил все формулы имеют одинаковую структуру. Их там всего 8 случаев. С калькуляторами я еще сильно не вникал в суть, но после слов, что такое задают в институте обязательно разберу. Так вот эти 8 случае я разбираю в if. Я конечно понимаю, что это не оптимально и вообще бред, но зато мне такой вариант пока подходит.
0
1856 / 713 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
29.06.2009, 14:06 26
Я сделал. Строка получается какая-то бредовая - YBDAlBTHjJAJcWd.
Наверное, потому, что у тебя ошибки в исхдной строке. Там не хватает вызовов функций F1, и не везде расставлены скобки. Я использовал такую вот строку:
F1(65+24)+F1(53+13)+F1(110-42)+F1(sqrt((35462+510)/17)+19)+F1(0-sqrt(112-48)+9)+F1(sqrt((60615-115)/5)-2)+F1(sqrt(10010-10)-34)+F1(0-sqrt(117-36)+12)+F1(66+18)+F1(sqrt((118365+450)/15)-17)+F1(sqrt(7585-16)+19)+F1(99-25)+F1(sqrt((30236+40)/4)-22)+F1(38+36)+F1(sqrt(3571+29)+39)+F1(sqrt((311780+720)/20)-38)+F1(sqrt((79209-117)/13)+22)
Добавлено через 57 секунд
Или f1 возвращает символ из какой-то таблицы символов?

Добавлено через 3 минуты 29 секунд
Как ведь можно по другому рассмотреть эти символы?
65+24=89 = (ASCII)'Y'
итд...
В проге вроде все правильно.
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
29.06.2009, 14:30 27
> Задача не из института. Просто решил сделать для себя.

Т.е. тебя в первую очередь интересует, как самому сделать разбор, нежили использовать сторонние компоненты?
0
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
29.06.2009, 14:46 28
... нежEли ...
1
1856 / 713 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
29.06.2009, 14:49 29
... нежEли ...
Это должно получиться в результате?
0
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
29.06.2009, 14:52 30
Нет конечно, я просто не смог удержаться увидев неправильный русский язык

Добавлено через 2 минуты 4 секунды
Вообще это задача смахивает на генерацию капчи.
Сначала автор генерит некий код, потом по нему рисует текст для человека.
А человек должен ввести правильный ответ.
0
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
29.06.2009, 16:09  [ТС] 31
Я уже не помню, но код у тебя вроде верный получился. Там такая ерунда и получается.
Это строка вообще то из JS.
s1(x){ return Math.Sqrt(x); }
f1(x){ return String.fromCodeToChar(x); }
Как там правильно синяя функция пишется я точно не помню. Но в общем она и возвращает символ ASCII.

А так это программа для Логина на сайт. Идет POST на сайт и получаем ответ cid, uid.
Потом шлем 2 запрос GET получаем ответ с этой формулой, генерим из нее ключ и шлем 3 запрос GET с этим ключем и происходит вход.


Да интересно, как происходит разбор синтаксиса. По типу написания текстового калькулятора или плагинов, скриптов к программе.
0
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
29.06.2009, 16:11 32
Сайт надеюсь не твой ?
А то после такого подробного описания поломают
0
1856 / 713 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
29.06.2009, 16:33 33
Обратная польская нотация, и все. Я практически ничего не менял в той проге, которую выложил в ответе №11.
К сожалению тот класс TMathParser не поддерживает работу со строками, я про это тогда и не думал, поэтому добавил в список внутренних функций функцию F1 и в качестве члена данных класса добавил строку, функция F1 добавляет к строке символ который её был передан как аргумент.
И еще я даже и не знал, что не обрабатываю такой случай - -s1. Парсер ждет элемента перед минусом, чтобы от него отнять. s1*-1 тоже нельзя сделать. Отрицательное число можно сделать только так: 0-s1.
Вот готовая программа с исходниками(BCB 6).
Вложения
Тип файла: rar Polish notation.rar (213.2 Кб, 16 просмотров)
0
1856 / 713 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
29.06.2009, 16:36 34
По типу текстового калькулятора.
0
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
29.06.2009, 18:16  [ТС] 35
Не, сайт не мой))

Что только 0-s1()? Тоже не очень красиво выходит.
0
1856 / 713 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
29.06.2009, 18:26 36
Ну,я как-нибудь перебьюсь. Если хочешь, исправь функцию разбора строки или подсчета выражения.
0
29.06.2009, 18:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2009, 18:26
Помогаю со студенческими работами здесь

Выполнить строку в формате base64
Здравствуйте. Беру calc.exe файл считываю через File.ReadAllBytes и конвертирую в строку формата...

Как выполнить строку SQL из функции
Скрипт для создания функции кол-ва всех записей во всех таблицах БД CREATE function countrec1 ...

Выполнить команду через командную строку
Задача такая. Есть определенная команда для командной строки. Нужно что бы Паскаль открыл командную...

Какая функция или пакет может выполнить поданную на вход строку?
есть переменная varchar2 значение которой изменяется ( per1 varchar2(100) := 'create sequence...


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

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru