Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Существуют ли способы определения функции скобок без ОПЗ для калькулятора на С#? (http://forum.oszone.net/showthread.php?t=222765)

Ksenya 13-12-2011 00:49 1814088

Существуют ли способы определения функции скобок без ОПЗ для калькулятора на С#?
 
С использованием ОПЗ непонятности, ищу альтернативные варианты решения..сам калькулятор - инженерный на С#..возможен какой-нибудь подход, не относящийся к использованию добавления класса ОПЗ на С#? Интересно послушать варианты и постараться воплотить их в жизнь.

Delirium 13-12-2011 01:00 1814093

Ничего не понял из текста сообщения. Что есть ОПЗ?

lxa85 13-12-2011 01:16 1814097

Delirium, ОПЗ - обратная польская запись (дальше я думаю ты знаешь :))
Ksenya, можешь попробовать создать класс "натурального" разбора строки. Т.е. повторить действия человека при решении примера. Т.е. следовать принятой логике установления приоритетов выполнения операций, и т.д. Насколько алгоритм будет рекурсивным - решать тебе.
Такой, многопроходный вариант составления дерева решения. (ОПЗ можно получить за один просмотр выражения с использованием стека)
Я могу даже тебе попробовать структуры нарисовать, но это будет не совсем правильно, т.к. задача поставлена для тебя :)

Ksenya 13-12-2011 11:48 1814252

нет, не знаю.. исходя из основной программы для которой небоходимо написать опз, это сложная задача..поэтому в этом вопросе мне хотелось бы послушать другие варианты написания..вот к примеру: является ли это альтернативой: http://netobf.com/HtmlView.aspx?ItemId=88

lxa85 13-12-2011 12:54 1814297

Ksenya, я тебя не понимаю. Напиши пожалуйста задание полностью.
ОПЗ - требование ТЗ?
Алгоритмов перевода обычной записи в опз - много.
Если взять стек, то на вскидку гугл сказал раз, два.

Я не знаю, насколько от вас требуют оптимизации вычисления выражения (от нас требовали) для применения параллельных решателей.

Ksenya 13-12-2011 13:31 1814329

Вложений: 1
задание - создать калькулятор (инженерный).(http://forum.oszone.net/post-1785298...ml#post1785298 Со всеми его функциями и операциями. Ищу оптимизированные варианты для относительно не сложной реализации)
вот пример с опз из инета(код)
но вроде как со стеком, (ссылку на которого мне предложили) проще
как считаете, мне нужно ваше мнение, потому что я уже запарилась..

Ksenya 13-12-2011 13:59 1814346

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

lxa85 13-12-2011 14:54 1814383

Ksenya, я дома Visual Studio Express C# установлю, я тебе скажу.
Код то вообще работает? ОПЗ получает?
А вообще так: Если делать нечего, выключи комп и займись чем-нибудь полезным. Погулять сходи, или ляг поспи, студент как никак - можно :)
Если спать невмоготу - напиши десяток примеров которые должен считать калькулятор.
Просто понятие "инженерный" слишком расплывчато, интересны конкретные тонкости его работы.
И как самый крайний случай - получи дерево выражения. Может это будет и не простой подготовительный этап, зато потом будет все намного проще.

Отдыхай, до вечера свободное время. :)

P.S. А! Так оказывается это я, тот самый негодяй, что сподвиг тебя на ОПЗ! Вот оно что... :blush:

Ksenya 13-12-2011 15:11 1814402

ладно, чем-нибудь позанимаюсь, просто после корректировки входимых переменных, заметила что еще необходимо добавить дополнит. символы опреаций: '√', '1/x', 'Mod',.. для символьной переменнной данных их размер превышает допустимое, перевод в строковое - не покатит, структура опз помешает..

:) да, это моя старая проблема..и теперь или я сней расквитаюсь, или она со мной расквитается((

до вечера - всмысле скачивать прогу? :) можно проще - через http://nnm-club.ru/forum/

Ksenya 13-12-2011 20:35 1814618

как там ваша установка?

Ksenya 13-12-2011 21:59 1814683

похоже никак) ладно, сдамся пожалуй

lxa85 13-12-2011 22:07 1814689

Ksenya, среду Visual C# Express развернул, копаюсь в приведенном тобой коде OPZ(2).zip
Я давно не брал в руки шашек, пока привыкаю к новым конструкциям.

Ksenya 13-12-2011 23:15 1814740

я не знаю насколько код дееспособен..просто на мой взгляд это был наиболее оптимальный вариант..в нем я доработала несколько элементов.. я просто не знаю..как его можно связать с моей главной программой и включить в класс дополнит. действия ..если вы позволите привести главную программу в пример..

lxa85 14-12-2011 13:22 1815025

Ksenya, посмотрел вчера исходник инженерного калькулятора. Если ты хочешь делать копию инженерного калькулятора MS, то прошу тебя подумать еще раз. Это очень неудобный калькулятор.
Далее говорю по виду Windows 7. Как было в XP я не вспомню.

По делу:
Я предлагаю тебе сначала сформировать строку выражения, а только затем ее обрабатывать. MS пошли дальше, они все время вычисляют промежуточные значения выражения. Иногда всего, а иногда то, что в скобках и не нарушает синтаксиса. Причем исправить выражение можно только набрав его заново.
Заметь, сложные вещи, например 1/x или e^x калькулятор заменяет словесным выражением.

В любом случае, что тебе сейчас надо сделать:
Тебе нужно сделать простейшую программу, которая тебе будет переводить строку выражения в ОПЗ.
Про основную форму калькулятора пока забываешь.
Договорись между собой о том, как ты будешь обозначать то или иное действие.
Обозначь порядок приоритетов (определение желательно вынести в функцию)
Приведенный тобою алгоритм опз, сразу пытается посчитать выражение, а это не то, что нужно.
Т.е. тебе надо полностью построить логику синтаксического анализатора.
Картинки будут вечером, и скорее всего от руки.

Ksenya 14-12-2011 21:35 1815358

Ага. Хм, штука убийственная, да=)) ..вот по-поводу исходника..мне кажется, что он заменен на старый, в конце прошлой темы я предложила новый..но совсем не тот, который я выкладывала(проверяла)..
а вот по поводу логического построения действий опз .. не знаю даже каким боком ее можно связать с моей главной программой) без какого-либо вектора задумки..первоначально с некоторыми доработками мне показалось, что переменные чисел и операций без скобок, не перекроют их аналогов, но со скобками..
на мой взгляд, лучше если я приведу в пример действительно ту прогу, на которой я остановилась и класс опз, с некоторыми доработками
..на куда-нибудь..вам на почту.) сайт популярен=) и известен не тока мне)


Время: 14:20.

Время: 14:20.
© OSzone.net 2001-