. Его надо представить в виде префиксной записи. Если не ошибаюсь это выглядит так:
Код
= X / + + C 1 * 1 / 4 D A 2
(ужас какой!!!) А главное - нарисовать в виде фамильного дерева:
Код
=
X /
+ +
C 1 * 1 /
4 D A 2
*)прикреплю файл с нормальным изображением - тут понятно плохо
Я СОВСЕМ не понимаю КАК, вводя выражение (вот ту самую префиксную запись), вывести на экран графическое представление дерева!!! Помогите, плз!!! Я просто не представляю как это сделать и тихо впадаю в панику...
virt
15.09.2005 16:32
по каким правилам вы делали преобразование??
и куда потеряли третий плюс??
Код
= X / + C + 1 * 4 D + 1 / A 2
далее по выражению однозначно строится дерево (тк эта строка -- свернутое представление дерева). Но так красиво на паскале не получится.Нажмите для просмотра прикрепленного файла
Jill
15.09.2005 16:42
да как же его строить-то?
ну не клацает у меня в голове! не клацает!!! не могу понять - для элементов выражения надо зараннее забивать положение (корень-узел-лист), либо есть способ просто ввести выражение и получить графическое представление по заданным параметрам???
_______________ я не волшебник, я только учусь ;) велосипед выдумать не смогу, а исходников похожих у меня нет и найти не получается
volvo
15.09.2005 16:48
Jill, по-моему, ты ошибаешься:
Цитата
(C+1+4*D)/(1+A/2)
в префиксной форме будет выглядеть вот так:
Цитата
/+C+1*4D+1/A2
Теперь нужно по этой строке построить бинарное дерево (бинарное - если ты хочешь пользоваться процедурой из FAQ-а для отрисовки дерева: FAQ: Деревья (процедура PrintTreeGraph), если хочешь сделать это самостоятельно - дерево может быть не обязательно бинарным...)
Jill
15.09.2005 16:51
пасиба, с этим разобралась :-)
_____________ это моя первая задача....по деревьям...сложно пока и примеров подобных нет
Jill
15.09.2005 18:03
офф...
подскажите, плз, каким макаром запустить пример в факе? при попытке запуска uses TreeUnit пишет "не найден TreeUnit.TPU" TreeUnit.PAS в той же папке
Сообщения были разделены в тему Проблема с подключением Graph.TPU, все дальнейшие вопросы связанные именно с подключением модулей решаем там, сюда возвращаемся только для обсуждений по теме...
volvo
16.09.2005 5:21
Jill, попробуй вот это (процедура Build строит дерево из префиксной строки, пока строка для простоты задана константой, можно вводить ее непосредственно в программе... Не забудь добавить реализацию PrintTreeGraph из FAQ):
volvo, пробую!!! это ж на экран должно выводиться? не выводится ничего
Romtek
16.09.2005 15:23
А что происходит при запуске программы (поточнее) ?
Jill
16.09.2005 15:29
Цитата(Romtek @ 16.09.05 11:23)
А что происходит при запуске программы (поточнее) ?
значится так: программа запускается (то бишь, в ошибки всякие не впадает), НО! возвращается к синему экрану с листингом / readln не помогает...
Romtek
16.09.2005 15:47
Что видно при нажатии Alt - F5 ? "Error: Graphics not initialized" ?
Jill
16.09.2005 15:52
Цитата(Romtek @ 16.09.05 11:47)
Что видно при нажатии Alt - F5 ? "Error: Graphics not initialized" ?
ууууууес! закинула EGAVGA.BGI в рабочую папку...........ииииииииииии.......
РЕБЯТЫ, Я ВАС ПРОСТО-ТАКИ ЛЮБЛЮ!!! СПАААААААААААСИБО!!!! ЭТО ПРОСТО СУПЕР!!! УРРРРРРРРРРААААААААА!!!
Jill
16.09.2005 16:46
последний маааааааленький вопросик: дописала полностью префисную строку
s: String =
'=X/+C+1*4D+1/A2';
изображение символов 4 D немного накладывается с остальными - все ок где это подправить можно?
volvo
16.09.2005 16:59
Jill, к сожалению, это пока не исправляется... Чем больше "глубина" дерева, тем меньше места для рисования остается на каждом последующем уровне. А ты сразу "отобрала" половину экрана для никому не нужной ветви "X=". Я не думаю, что это тоже должно включаться в дерево, т.к. обычно дерево строится по выражению, которое необходимо вычислить (т.е. по выражению справа от знака равенства...)
Но в любом случае, для исправления "наложения" придется переписывать процедуру полностью...
Jill
16.09.2005 17:03
Цитата(volvo @ 16.09.05 12:59)
Я не думаю, что это тоже должно включаться в дерево, т.к. обычно дерево строится по выражению, которое необходимо вычислить (т.е. по выражению справа от знака равенства...)
ок, значит так и надо спасибо большое - очень красиво получается и не нуже совсем там этот Х!!! ;)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.