IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Фамильное представление ДЕРЕВА, ...графически отобразить...
Jill
сообщение 15.09.2005 11:56
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 105
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


Вобщем, есть выражение:
Код
X = (C+1+4*D)/(1+A/2)
. Его надо представить в виде префиксной записи. Если не ошибаюсь это выглядит так:
Код
= X / + + C 1 * 1 / 4 D A 2
(ужас какой!!!)
А главное - нарисовать в виде фамильного дерева:
Код
 =

X                           /

        +                                        +

C       1         *                     1                /
                                                             
               4        D                            A         2  


*)прикреплю файл с нормальным изображением - тут понятно плохо

Я СОВСЕМ не понимаю КАК, вводя выражение (вот ту самую префиксную запись), вывести на экран графическое представление дерева!!! Помогите, плз!!! Я просто не представляю как это сделать и тихо впадаю в панику... sad.gif


Прикрепленные файлы
Прикрепленный файл  tree.doc ( 24 килобайт ) Кол-во скачиваний: 243
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 16)
virt
сообщение 15.09.2005 12:32
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 419
Пол: Мужской

Репутация: -  6  +


по каким правилам вы делали преобразование??

и куда потеряли третий плюс??

Код
= X / + C + 1 * 4 D + 1 / A 2


далее по выражению однозначно строится дерево (тк эта строка -- свернутое представление дерева). Но так красиво на паскале не получится.Прикрепленное изображение


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Jill
сообщение 15.09.2005 12:42
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 105
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


да как же его строить-то? sad.gif

ну не клацает у меня в голове! не клацает!!!
не могу понять - для элементов выражения надо зараннее забивать положение (корень-узел-лист), либо есть способ просто ввести выражение и получить графическое представление по заданным параметрам???

_______________
я не волшебник, я только учусь ;) велосипед выдумать не смогу, а исходников похожих у меня нет и найти не получается sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 15.09.2005 12:48
Сообщение #4


Гость






Jill, по-моему, ты ошибаешься:
Цитата
(C+1+4*D)/(1+A/2)
в префиксной форме будет выглядеть вот так:
Цитата
/+C+1*4D+1/A2


Теперь нужно по этой строке построить бинарное дерево (бинарное - если ты хочешь пользоваться процедурой из FAQ-а для отрисовки дерева: FAQ: Деревья (процедура PrintTreeGraph), если хочешь сделать это самостоятельно - дерево может быть не обязательно бинарным...) smile.gif
 К началу страницы 
+ Ответить 
Jill
сообщение 15.09.2005 12:51
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 105
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


пасиба, с этим разобралась :-)

_____________
это моя первая задача....по деревьям...сложно пока
и примеров подобных нет sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Jill
сообщение 15.09.2005 14:03
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 105
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


офф...

подскажите, плз, каким макаром запустить пример в факе? при попытке запуска uses TreeUnit пишет "не найден TreeUnit.TPU"
TreeUnit.PAS в той же папке

что куда размещать?

не пойму никак... мне бы посмотреть... sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 15.09.2005 14:13
Сообщение #7


Гость






Вот пример использования: Деревья
 К началу страницы 
+ Ответить 
volvo
сообщение 15.09.2005 16:02
Сообщение #8


Гость






Сообщения были разделены в тему Проблема с подключением Graph.TPU, все дальнейшие вопросы связанные именно с подключением модулей решаем там, сюда возвращаемся только для обсуждений по теме...
 К началу страницы 
+ Ответить 
volvo
сообщение 16.09.2005 1:21
Сообщение #9


Гость






Jill, попробуй вот это (процедура Build строит дерево из префиксной строки, пока строка для простоты задана константой, можно вводить ее непосредственно в программе... Не забудь добавить реализацию PrintTreeGraph из FAQ):
Uses Crt, Graph;

Type
TType = Char;
PTTree = ^TTree;
TTree = Record
Data: TType;
Left, Right: PTTree;
End;

Procedure PrintTreeGraph(root: PTTree);
{
!!! Здесь - реализация процедуры PrintTreeGraph !!!
}

var
global_root: pttree;

Procedure Build(Var root: PTTree;
Expr: String; Var Shift: Integer);
Begin
New(root);
Root^.Data := Expr[Shift];
Root^.Left := nil;
Root^.Right := nil;
If (Expr[Shift] in ['+','*','-','/']) Then Begin
Inc(Shift);
Build(Root^.Left, Expr, Shift);
Build(Root^.Right, Expr, Shift);
End
Else Inc(Shift)
End;

Const
i: integer = 1;
s: String =
'/+C+1*4D+1/A2';

Var
grDriver: integer;
grMode: integer;
ErrCode: Integer;

begin
global_root := nil;
Build(global_root, s, i);

grDriver := Detect;
InitGraph(grDriver, grMode,'');
ErrCode := GraphResult;
if ErrCode <> grOk then begin
Writeln('Graphics error:', GraphErrorMsg(ErrCode)); Halt(100);
end;
PrintTreeGraph(global_root);
readln;
CloseGraph;
end.


Цитата(virt @ 15.09.05 12:32)
Но так красиво на паскале не получится
А если попробовать? ;)
 К началу страницы 
+ Ответить 
Jill
сообщение 16.09.2005 10:47
Сообщение #10


Пионер
**

Группа: Пользователи
Сообщений: 105
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


Цитата(volvo @ 16.09.05 1:21)
А если попробовать?  ;)


volvo, пробую!!! это ж на экран должно выводиться?
не выводится ничего sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Romtek
сообщение 16.09.2005 11:23
Сообщение #11


Знаток
****

Группа: Пользователи
Сообщений: 303
Пол: Мужской
Реальное имя: Роман

Репутация: -  2  +


А что происходит при запуске программы (поточнее) ?

Сообщение отредактировано: Romtek - 16.09.2005 11:24


--------------------
Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Jill
сообщение 16.09.2005 11:29
Сообщение #12


Пионер
**

Группа: Пользователи
Сообщений: 105
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


Цитата(Romtek @ 16.09.05 11:23)
А что происходит при запуске программы (поточнее) ?


значится так: программа запускается (то бишь, в ошибки всякие не впадает), НО! возвращается к синему экрану с листингом / readln не помогает...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Romtek
сообщение 16.09.2005 11:47
Сообщение #13


Знаток
****

Группа: Пользователи
Сообщений: 303
Пол: Мужской
Реальное имя: Роман

Репутация: -  2  +


Что видно при нажатии Alt - F5 ?
"Error: Graphics not initialized" ?

Сообщение отредактировано: Romtek - 16.09.2005 11:48


--------------------
Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Jill
сообщение 16.09.2005 11:52
Сообщение #14


Пионер
**

Группа: Пользователи
Сообщений: 105
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


Цитата(Romtek @ 16.09.05 11:47)
Что видно при нажатии Alt - F5 ?
"Error: Graphics not initialized" ?



ууууууес! закинула EGAVGA.BGI в рабочую папку...........ииииииииииии.......

РЕБЯТЫ, Я ВАС ПРОСТО-ТАКИ ЛЮБЛЮ!!! СПАААААААААААСИБО!!!! ЭТО ПРОСТО СУПЕР!!! УРРРРРРРРРРААААААААА!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Jill
сообщение 16.09.2005 12:46
Сообщение #15


Пионер
**

Группа: Пользователи
Сообщений: 105
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


последний маааааааленький вопросик:
дописала полностью префисную строку
  s: String =
'=X/+C+1*4D+1/A2';


изображение символов 4 D немного накладывается
с остальными - все ок
где это подправить можно?

Сообщение отредактировано: Jill - 16.09.2005 12:47
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 16.09.2005 12:59
Сообщение #16


Гость






Jill, к сожалению, это пока не исправляется... sad.gif Чем больше "глубина" дерева, тем меньше места для рисования остается на каждом последующем уровне. А ты сразу "отобрала" половину экрана для никому не нужной ветви "X=". Я не думаю, что это тоже должно включаться в дерево, т.к. обычно дерево строится по выражению, которое необходимо вычислить (т.е. по выражению справа от знака равенства...)

Но в любом случае, для исправления "наложения" придется переписывать процедуру полностью...
 К началу страницы 
+ Ответить 
Jill
сообщение 16.09.2005 13:03
Сообщение #17


Пионер
**

Группа: Пользователи
Сообщений: 105
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


Цитата(volvo @ 16.09.05 12:59)
Я не думаю, что это тоже должно включаться в дерево, т.к. обычно дерево строится по выражению, которое необходимо вычислить (т.е. по выражению справа от знака равенства...)


ок, значит так и надо smile.gif спасибо большое - очень красиво получается smile.gif и не нуже совсем там этот Х!!! ;)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 13:16
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"