Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 09.05.2017
Сообщений: 24

Сформировать бинарное дерево, которое отражает служебные слова языка Паскаль

24.11.2017, 14:28. Показов 1671. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сформировать бинарное дерево, которое отражает служебные слова алгоритмического языка Паскаль: IF, THEN, ELSE, CASE, OF, WHILE, DO, REPEAT, UNTIL. Ключами считать первые буквы слова. Проверить, вошло слово "OF" в дерево. Если не вошло, то добавить узел с этим словом, если вошло, удалить его. Вывести промежуточную и конечную информации.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.11.2017, 14:28
Ответы с готовыми решениями:

Сформировать бинарное дерево
Сформировать идеально сбалансированное дерево, элементами которого являются числа, вводимые с клавиатуры

Исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру
Помогите, не могу понять!( Нужно исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру. вот...

Сформировать идеально сбалансированное бинарное дерево
Дан текст программы. Проверти правильно или нет описание сделал? TNode* makePerfectBalancedTree(int n, TNode* p) // происходит...

6
 Аватар для Jener
228 / 225 / 220
Регистрация: 03.07.2012
Сообщений: 466
27.11.2017, 17:11
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
const
  ServW : array[1..9] of char = ('I','T','E','C','O','W','D','R','U');
type
  tData = Char;
  pNode = ^Node;
  Node  = record
    Data        : tData;
    Left, Right : pNode;
  end;
procedure AddToTree(var T:pNode; aData:tData);
begin
  if t=nil then begin
    New(T);
    T^.Data:=aData;
    T^.Left:=nil;
    T^.Right:=nil;
  end else if aData>T^.Data then AddToTree(T^.Right,aData)
  else AddToTree(T^.Left,aData);
end;
procedure WriteTr(T:pNode);
begin
  If T=nil then exit;
  WriteTr(T^.Left);
  write(T^.Data,' ');
  WriteTr(T^.Right);
end;
function Find(T:pNode;aData:TData) : pNode;
begin
  if T=nil then Find:=nil
  else if T^.Data=aData then Find:=T
  else if aData<T^.Data then Find:=Find(T^.Left,aData)
  else Find:=Find(T^.Right,aData);
end;
procedure Remov(var T,Prt:pNode;aData:tData);
var Prev,Ins,p:pNode;
begin
  if T=nil then exit
  else if aData<T^.Data then Remov(T^.Left,T,aData)
  else if aData>T^.Data then Remov(T^.Right,T,aData)
  else if (T^.Left=nil) and (T^.Right=nil) then begin
    dispose(T);
    T:=nil;
  end else if (T^.Left<>nil) and (T^.Right=nil) then begin
    Ins:=T;
    if Prt=nil then T:=T^.Left
    else if aData<Prt^.Data then Prt^.Left:=T^.Left
    else Prt^.Right:=T^.Left;
    dispose(Ins);
    Ins:=nil;
  end else if (T^.Left=nil) and (T^.Right<>nil) then begin
    Ins:=T;
    if Prt=nil then T:=T^.Right;
    if aData<Prt^.Data then Prt^.Left:=T^.Right
    else Prt^.Right:=T^.Right;
    dispose(Ins);
    Ins:=nil;
  end else begin
    p:=T;
    Ins:=T^.Right;
    while Ins^.Left<>nil do begin
      Prev:=Ins;
      Ins:=Ins^.Left;
    end;
    Prev^.Left:=Ins^.Right;
    Ins^.Right:=T^.Right;
    Ins^.Left:=T^.Left;
    if Prt=nil then T:=Ins
    else if aData<Prt^.Data then Prt^.Left:=Ins
    else Prt^.Right:=Ins;
    dispose(p);
    p:=nil;
  end;
end;
var
  T,p : pNode;
  i : integer;
begin
  T := nil;
  for i := 1 to 9 do AddToTree(T,ServW[i]);
  WriteTr(T);
  writeln;
  p:=nil;
  if Find(T,'O')<>nil then Remov(T,p,'O');
  WriteTr(T);
  writeln;
  if Find(T,'O')=nil then AddToTree(T,'O');
  WriteTr(T);
  readln;
end.
1
0 / 0 / 0
Регистрация: 09.05.2017
Сообщений: 24
28.11.2017, 11:22  [ТС]
Огромное спасибо, может кто ищё сможет блок-схему запилить? =)
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
28.11.2017, 13:06
Примерно так.
Вложения
Тип файла: rar Блок-схема.rar (22.6 Кб, 9 просмотров)
2
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
28.11.2017, 15:50
Торович,
Цитата Сообщение от marian44 Посмотреть сообщение
Проверить, вошло слово "OF" в дерево. Если не вошло, то добавить узел с этим словом, если вошло, удалить его.
Pascal
83
84
  if Find(T,'O')<>nil then Remov(T,p,'O') else AddToTree(T,'O');
  WriteTr(T);
0
 Аватар для Jener
228 / 225 / 220
Регистрация: 03.07.2012
Сообщений: 466
28.11.2017, 17:42
bormant, сделал так, что бы проверить работу обеих процедур, хотя по условию нужно сделать что-то одно - добавить или удалить узел
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
28.11.2017, 17:56
Торович,
это-то понятно, но условие ведь чуточку другое :-)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.11.2017, 17:56
Помогаю со студенческими работами здесь

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

Запись слова в бинарное дерево
Можно ли записать слово, либо строку в бинарное дерево? Просто у меня стоит задание по лабораторной: записать структуру Patient, которая...

Сформировать бинарное дерево поиска и определить максимальную глубину дерева
Добрый день всем. По задаче необходимо сформировать бинарное дерево поиска и определить максимальную глубину дерева. Перед завершением...

Сформировать идеально сбалансированное бинарное дерево и найти в нем максимальный элемент
Далее преобразовать его в дерево поиска и тоже найти максимальный элемент.

Сформировать идеально сбалансированное бинарное дерево, тип информационного поля - double
Привет, кто сможет помочь? 1. Сформировать идеально сбалансированное бинарное дерево, тип информационного поля - double. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru