![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 28.02.2011
Сообщений: 16
|
![]()
Здравствуйте. Поставлена задача вычисления значения явно заданной функции и ее производной в заданной точке.
Описал дерево и рекурсивные функции, работающие по уже заполненному дереву. Начинал писать на C++, потом перенес в C# поэтому функции в коде не дописаны. Код:
Пытался сделать через рекурсию, вызывая функцию void Build(string expr, string key) (её наработки удалил, извините), которая, начиная с конца, ищет первое вхождение знаков "+" и "-" и, если находит, засовывает знак в текущий узел (зависящий от ключа), а затем вызывает саму себя для подстроки слева от знака с ключом left и аналогично справа с ключом right; если же "+"/"-" в строке не встречается, то ищет "*" или "/", и т. д.; если все знаки операций исчерпываются, то, значит, достигнут лист - число или аргумент, которое добавляется слева или справа. Но тут возникает несколько трудностей, в том числе проблема с учетом скобок. Я думаю, что существуют уже готовые алгоритмы заполнения; поделитесь ими, пожалуйста (или подскажите, как решить проблему со скобками...). |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 28.02.2011
Сообщений: 16
|
![]()
Когда-то писал парсер для комплексного калькулятора, сейчас сделал нисходящий разбор по абсолютной аналогии с ним. Работает. Кому интересно, делюсь частично кодом на C#.
Дерево: Код:
Последний раз редактировалось Colder M; 08.06.2011 в 08:13. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 28.02.2011
Сообщений: 16
|
![]()
Билдер дерева:
Код:
Последний раз редактировалось Colder M; 08.06.2011 в 07:40. |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
сохранение дерева | demonara | Помощь студентам | 3 | 03.01.2011 12:35 |
Заполнение дерева | 29AHexNumber | Общие вопросы C/C++ | 0 | 08.06.2010 10:49 |
Cоздание дерева математического выражения | CilCatblack | Общие вопросы C/C++ | 3 | 20.04.2009 14:22 |
Глубина дерева | Иллидан | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 29.03.2008 11:36 |
обход дерева | ribka | Помощь студентам | 2 | 11.12.2007 20:38 |