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

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

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

 
 Ответить  Открыть новую тему 
> Поиск заданого элемента в бинарном дереве поиска
сообщение
Сообщение #1


Студент 3-к группы (ИГТК)
*

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

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


Вот слепил из того что было.
Взял исходники с сайта volvo.

Ввожу с клавиатуры: 5 4 3 2 1
Не получается организовать поиск либо из-за того что я не правильно ввожу, или не правильно пользуюсь процедурой. Вот исходник:

uses CRT;
type
T = integer;

TTree = ^TNode;
TNode = record
value: T;
Left, Right: TTree;
end;

procedure Insert(var Root: TTree; X: T);

procedure CreateNode(var p: TTree; n: T);
begin
New(p);
p^.value := n;
p^.Left := nil;
p^.Right := nil
end;

begin
if Root = nil then CreateNode(Root, X)
else
with Root^ do begin
if value < X then Insert(Right, X)
else
if value > X then Insert(Left, X)
end;
end;

function Find(Root: TTree; X: T): TTree;
var p: TTree;
begin
if Root <> nil then begin
p := Root;
while p <> nil do begin
if X < p^.value then p := p^.Left
else
if X = p^.value then Break
else p := p^.Right
end;
Find := p
end
else find:=nil;


end;
var s: integer;
root,q: TTree;

begin
write('Введите любое число от 0 до 100. Конец ввода: 0 ');
repeat
readln(s);
Insert(root,s);
until s=0;

writeln('Введите значение которое хотите найти:');
read(s);
q:=Find(Root,s);

If q<>nil then writeln('Адрес найденого значения:',);

readkey

end.



--------------------
Жизнь - это лестница. Когда одна ступень проваливается, 2-ая нога находиться на второй ступеньке, а значит есть и второй шанс... ©
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






А что, собственно, не получается? Напечатать именно адрес? Так он печатается через "Сегмент:Смещение"... Ты ж вообще ничего не печатаешь...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Студент 3-к группы (ИГТК)
*

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

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


Всё нормально. Я сам себе задачу усложнил =) Мне нужно было просто найти, есть ли это значение или нет.

volvo
Если можешь показать как вывести адрес, буду очень благодарен, а то я немного не понял что за смещение. Так чисто для моего саморазвития.


--------------------
Жизнь - это лестница. Когда одна ступень проваливается, 2-ая нога находиться на второй ступеньке, а значит есть и второй шанс... ©
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






If q <> nil then writeln('Адрес найденого значения:', seg(q^), ':', ofs(q^));
Если переведешь распечатанные значения в 16-ричную систему счисления, они должны совпасть с тем, что выдает отладчик...
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 21.10.2020 3:34
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name