1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| andr |
31.10.2004 23:39
Сообщение
#1
|
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: 0 |
мне надо сделать задачку с двочным деревом. выкладываю то, что сделал на данный момент, НЕ РАБОТАЮТ процедуры поиска и удаления. причина - не знаю. поиск выдает неправильный ответ, удаление даже не компилируется.
может быть кто-нибудь ошибку найдет? Код uses crt; type u=^bintree; rec = record dist : string; num : string; name : string; date : string; end; bintree = record inf : rec; l, r : u; end; var tree : u; fi, fo : text; procedure ins(var tr : u; p : bintree); {работает} begin if tr = nil then begin new(tr); tr^ := p; end else if p.inf.name < tr^.inf.name then ins(tr^.l,p) else ins(tr^.r,p); end; procedure insall; {работает} var z : bintree; begin while not seekeof(fi) do begin with z do begin readln (fi, inf.dist, inf.num, inf.name, inf.date); l := nil; r := nil; ins(tree, z); end; end; end; procedure printtree(t : u); {работает} begin if t <> nil then begin printtree(t^.l); with t^.inf do begin writeln(fo, date, num, dist, name); end; printtree(t^.r); end; end; procedure findname(tree : u; x : string); {компилируется, но выдает неправ. ответ} begin while tree <> nil do begin if x = tree^.inf.name then with tree^.inf do begin writeln(fo, date, num, dist, name); end else if x < tree^.inf.name then tree := tree^.l else tree := tree^.r; end; writeln(fo, 'not found') end; procedure delall(tree : u); {не компилируется} begin if tree <> nil then begin delall(tree^.r); delall(tree^.r); dispose(tree); tree := nil; end; end; begin assign(fo, 'out.txt'); rewrite(fo); assign(fi, 'in.txt'); reset(fi); tree := nil; insall; printtree(tree); close(fo); close(fi); end. Сообщение отредактировано: andr - 31.10.2004 23:41 |
![]() ![]() |
| Altair |
4.11.2004 9:33
Сообщение
#2
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Рекурсия красива ... она доставляет огромное эстетическое наслаждение Цитата и чем же она хороша? Ответил? А вот в Прологе например, это незаменимый инструмент! -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
andr двоичное дерево 31.10.2004 23:39
volvo andr
Чем пробовали компилировать? У меня в ТР 7 ... 1.11.2004 0:10
andr volvo, спасибо, я сам заметил, решил написать. но ... 1.11.2004 0:37
andr volvo, я прямо за Вами не успеваю. :) c выходом Вы... 1.11.2004 0:42
Digitalator А не лучше ли delall без рекурсии делать воизбежан... 1.11.2004 21:20
Altair Хм... если рекрсия хорошо реализованна, то не долж... 2.11.2004 8:03
APAL Ссылка действительно интересная.
Только читать ее ... 2.11.2004 10:43
andr я понял, в чем была проблема:
readln (fi, in... 2.11.2004 15:12
Доча ... удалено...
Пожалуйста, если вы хотите задать... 2.11.2004 21:23
Digitalator
и чем же она хороша?
PS:
Спросите об этом мальч... 3.11.2004 19:35
andr вроде как отладил, если кому-то вдруг понадобится,... 4.11.2004 16:01![]() ![]() |
|
Текстовая версия | 8.12.2025 21:56 |