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

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

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

 
 Ответить  Открыть новую тему 
> изменение э-тов по ключу в дереве
Artex
сообщение 25.12.2006 19:48
Сообщение #1


Гость






Всем привет, очень прошу помочь с деревом, я читал FAQ, но не смог разобраться sad.gif(( Задача такая: изменить
отрицательные элементы в дереве на их abs величины, похожей нигде пока не нашел... Из всего курса паскаля не врубился только в эту. Помогите пожалуйста дописать процедуру ввода элементов и использование этих процедур в программе, очень прошу...
Procedure Abs(T: TTree);
Begin
  If T <> nil Then
    With T^ Do Begin
      if data<0 Then Data := abs(data);
      AbsLeft(T); AbsRight(T)
    End
End;
procedure PrintTree(t:Ttree;h:integer);
var i:integer;
begin
 if t<>nil then
   with t^ do
   begin
     PrintTree(left,h+1);
     for i:=1 to h do write('    ');
     writeln(key);
     PrintTree(right,h+1);
   end;
end;


var 
  root: TTree;
...
  

begin
  ... { заполнение дерева }
 
  
    Abs(root);

  ... { выводим результат }
end.


Сообщение отредактировано: volvo - 25.12.2006 19:55
 К началу страницы 
+ Ответить 
volvo
сообщение 25.12.2006 19:54
Сообщение #2


Гость






Procedure Abs(T: TTree);
Begin
  If T <> nil Then
    With T^ Do Begin
      Data := system.abs(Data);
      Abs(Left); Abs(Right)
    End;
End;
Процедуры создания дерева есть в FAQ... Я не вижу смысла перепечатывать их оттуда сюда, ничего нового ты все равно не увидишь, и если не разобрался ТАМ, то как разберешься ЗДЕСЬ?
 К началу страницы 
+ Ответить 
Гость
сообщение 25.12.2006 20:16
Сообщение #3


Гость






Type  TType = Integer;
 TTree = ^TNode;  TNode = Record
 Data: TType;
  Left, Right: TTree;
 End;
Procedure Add(Var T: TTree; i: TType);

  Procedure CreateNode(Var p: TTree; n: TType);
  Begin
    New(p);
    p^.Data := n;
    p^.Left := nil;
    p^.Right := nil
  End;

Begin
  If T <> nil Then
    With T^ Do Begin

        If Data < i Then Add(Right, i)
        Else
          If Data > i Then Add(Left, i)

    End
  Else
    CreateNode(T, i)
End;
Procedure Abs(T: TTree);
Begin
  If T <> nil Then
    With T^ Do Begin
      Data := system.abs(Data);
      Abs(Left); Abs(Right)
    End;
End;
Procedure PrintDown(T: TTree);
Begin
  If T = nil Then halt;
  With T^ Do Begin

    Write(Data, ' ');
    PrintDown(Left); PrintDown(Right)

  End
end;


Var
 

Begin



End.

мне нужна только описательная часть и использование процедур...
это последняя задача для допуска к экзамену, и именно тему деревья я пока не понял, остальные задачи делал сам и вовремя.
М
Про теги не забываем...
мисс_граффити



Сообщение отредактировано: мисс_граффити - 25.12.2006 20:54
 К началу страницы 
+ Ответить 

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

 

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