| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > Небольшой вопрос по C#. |
| Автор: MCMK 12.5.2006, 10:57 |
| Доброго времени суток! Вопрос следующий: Необходима программа для решения интегралов. Решение в консольном приложении написал. Но это все необходимо сделать на форме. Как я представил это - textBox для ввода самого подынтегрального уравнения, кнопочка для решения и например label для вывода ответа... В итоге столкнулся с проблемой: Не могу организовать ввод с помощью textBox. Т.е. не могу сделать так, чтобы программа распознавала введенное не как обычный текст, а как уравнение... Надеюсь понятно объяснил. Если нет, постараюсь еще раз, только скажите... (язык C#) Заранее спасибо! |
| Автор: MCMK 12.5.2006, 12:09 |
| В консоли задается в самом тексте программы, а не вводиться |
| Автор: ivashkanet 12.5.2006, 12:59 |
Ах, так... Тогда придется анализироватьтекстовую строку и вытаскивать из нее функцию. Даже не знаю чем тебе помочь Дело это довольно таки трудоемкое, ИМХО. Хотя я могу ошибаться |
| Автор: MCMK 12.5.2006, 13:36 |
| Надеюсь на твою последнюю строку! Хотелось бы услышать еще советы! |
| Автор: MFSham 12.5.2006, 13:44 |
| Когда я делал что-то подобное, то реализовывал этот метод http://algolist.manual.ru/syntax/revpn.php Только мне надо было не интеграл, а просто решить уравнение. В твоем случае этот метод будет ресурсоемкий, т.к. каждый раз придется анализировать строку при изменении аргумента. |
| Автор: MCMK 12.5.2006, 19:20 |
| MFSham, Спасибо! Это единственный способ??? |
| Автор: Void 12.5.2006, 19:44 | ||
Один раз генерируем в байт-код простейшей стековой машины, потом функция вычисляется существенно быстрее. Можно еще сгенерить метод с помощью System.Reflection.Emit. MCMK, собственно, если интеграл берется численно, то берем библиотечку вычисления выражений в рантайме с http://www.codeproject.com/csharp/runtime_eval.asp или любую другую, что найдет http://www.google.ru/search?q=C%23+expression+compilation+library&start=0&ie=utf-8&oe=utf-8. Если аналитически — проблема крайне сложная, и разбор выражения в AST будет самой простой задачей. |
| Автор: ivashkanet 12.5.2006, 19:45 |
В любом случае нужно делать анализ строки, этот, ИМХО, неплохой. Можешь поискать готовый алгоритм на C#. Где не знаю |
| Автор: MFSham 12.5.2006, 19:46 |
| Еще можно представить строку в виде дерева. Этот вариант будет намного лучше, т.к. дерево строится только один раз. Сам не реализовывал. Попробуй на бумажке представить функцию в виде дерева, думаю алгоритм поймешь сам. |
| Автор: Void 12.5.2006, 19:52 |
| Кстати, можно взять еще http://www.codeproject.com/csharp/spart.asp (аналог Boost.Spirit на C#). Полноценный генератор парсеров вроде http://www.ssw.uni-linz.ac.at/Coco/ в данном случае, имхо, overkill. |
| Автор: MCMK 12.5.2006, 20:25 |
| Спасибо всем огромное!!! Буду ковырять... |
| Автор: ffldove 16.5.2006, 17:51 | ||
подскажите что-то неправильно в class что именно как ввести с клавиатуры n если можно пишите на мыло ffldove@yandex.ru
|