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

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

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

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите наиболее простой вариант решения проблемы.
Есть строка типа
(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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.06.2009, 13:13
Ответы с готовыми решениями:

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

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

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

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

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

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

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

В общем дошло до того, как я говорил все формулы имеют одинаковую структуру. Их там всего 8 случаев. С калькуляторами я еще сильно не вникал в суть, но после слов, что такое задают в институте обязательно разберу. Так вот эти 8 случае я разбираю в if. Я конечно понимаю, что это не оптимально и вообще бред, но зато мне такой вариант пока подходит.
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
29.06.2009, 14:06
Я сделал. Строка получается какая-то бредовая - 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(sq rt((311780+720)/20)-38)+F1(sqrt((79209-117)/13)+22)
Добавлено через 57 секунд
Или f1 возвращает символ из какой-то таблицы символов?

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

Т.е. тебя в первую очередь интересует, как самому сделать разбор, нежили использовать сторонние компоненты?
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
29.06.2009, 14:46
... нежEли ...
1
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
29.06.2009, 14:49
... нежEли ...
Это должно получиться в результате?
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
29.06.2009, 14:52
Нет конечно, я просто не смог удержаться увидев неправильный русский язык

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

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


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

Что только 0-s1()? Тоже не очень красиво выходит.
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
29.06.2009, 18:26
Ну,я как-нибудь перебьюсь. Если хочешь, исправь функцию разбора строки или подсчета выражения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.06.2009, 18:26
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru