Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 1
Регистрация: 20.12.2017
Сообщений: 8
1

Программирование нелинейных структур данных

21.12.2017, 00:04. Показов 366. Ответов 1
Метки нет (Все метки)

Представить приведенную таблицу в виде бинарного дерева. Написать процедуры создания и обхода дерева, а также одну из процедур или функций приведенных ниже в соответствии с заданным вариантом.
1.Написать процедуру, которая определяет уровень, на котором находится элемент E в дереве T.
Ниже в текстовом документе есть вся программа кроме процедуры Помогите пожалуйста .

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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
program TreeProcess;
 
uses crt;
type
  zap = record fio: string[15];
    adr: string[30];
  end;
  treeptr = ^tree;
  tree = record data: zap;
    left, right: treeptr;
  end;
 
var
  top: treeptr;
  z: zap;
  level, n, i, number: integer;
 
function addtree(top: treeptr; newnode: zap): treeptr;
begin
  if top = nil then 
  begin
    new(top);
    top^.data := newnode; 
    top^.left := nil; 
    top^.right := nil;
  end 
  else
  if top^.data.fio > newnode.fio then 
    top^.left := addtree(top^.left, newnode)
  else
    top^.right := addtree(top^.right, newnode); 
  addtree := top
end;
 
procedure orgtree;
begin
  writeln('Процедура организации дерева');
  writeln('Выход -> символ "*"'); 
  writeln('===============================');
  top := nil;
  while true do 
  begin
    writeln('Введите ФИО грузополучателя'); 
    readln(z.fio);
    writeln('Введите адрес грузополучателя'); 
    readln(z.adr);
    if z.fio = '*' then exit; 
    top := addtree(top, z); 
  end;
end;
 
procedure dobl;
begin
  writeln('Процедура добавления листа'); 
  writeln('Выход -> символ "*"'); 
  writeln('===========================');
  writeln('Введите ФИО грузополучателя'); 
  readln(z.fio);
  writeln('Введите адрес грузополучателя'); 
  readln(z.adr);
  if z.fio = '*' then exit; 
  top := addtree(top, z); 
end;
 
procedure prosmotr(top: treeptr);
begin
  if top <> nil then 
  begin
    prosmotr(top^.left);
    writeln(i, ' ', top^.data.fio, ' ', top^.data.adr); 
    i := i + 1;
    prosmotr(top^.right)
  end;
end;
 
procedure otobr(top: treeptr; otstup: integer);
begin
  if top <> nil then 
  begin
    otstup := otstup + 6;
    otobr(top^.right, otstup); 
    writeln(' ':otstup, top^.data.fio); 
    otobr(top^.left, otstup);
  end; end;
 
begin
  while true do 
  begin
    clrscr;
    writeln('1-Организация двоичного дерева'); 
    writeln('2-Добавление листа к дереву'); 
    writeln('3-Просмотр дерева');
    writeln('4-Подсчет количества вершин на n-уровне'); 
    writeln('5-Выход');
    writeln('---------------------------------');
    writeln('Введите номер пункта меню'); 
    readln(number);
    case number of 
      1: orgtree; 
      2: dobl;
      3:
        begin
          writeln('Просмотр дерева'); 
          writeln('=========================='); 
          i := 0;
          prosmotr(top); 
          otobr(top, 1); 
          writeln('enter'); 
          readln;
        end;
      {4:begin
      
      writeln('Подсчет количества вершин на n-уровне'); 
      writeln('==========================');
      write('Введите значение уровня ->'); 
      read(level);
      n:=0;
      nodecount(top,level,n); writeln;
      writeln('На уровне',' ',level,' ','находится',' ',n,' ','вершин'); 
      writeln('enter');
      readln;
       end;}
      5: exit;
    end;
  end;
end.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2017, 00:04
Ответы с готовыми решениями:

Программирование динамических структур
Разработать программу формирования стека с последующим его преобразованием в двунаправленную...

Программирование линейных структур.
Помогите пожалуйста. Надо написать программу. Вычислить значение f(x)=x+sinx+tg²x в заданной точке.

Программирование нелинейных структур данных
Представить приведенную таблицу в виде бинарного дерева. Написать процедуры создания и обхода...

Программирование с использованием структур данных
На междугородной АТС информация о разговорах содержит дату разговора, код и название города, время...

1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31034 / 20268 / 7896
Регистрация: 22.10.2011
Сообщений: 35,170
Записей в блоге: 6
21.12.2017, 11:36 2
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
program TreeProcess;
 
uses crt;
type
  zap = record fio: string[15];
    adr: string[30];
  end;
  treeptr = ^tree;
  tree = record data: zap;
    left, right: treeptr;
  end;
 
var
  top: treeptr;
  z: zap;
  level, n, i, number: integer;
 
function addtree(top: treeptr; newnode: zap): treeptr;
begin
  if top = nil then 
  begin
    new(top);
    top^.data := newnode; 
    top^.left := nil; 
    top^.right := nil;
  end 
  else
  if top^.data.fio > newnode.fio then 
    top^.left := addtree(top^.left, newnode)
  else
    top^.right := addtree(top^.right, newnode); 
  addtree := top
end;
 
procedure orgtree;
begin
  writeln('Процедура организации дерева');
  writeln('Выход -> символ "*"'); 
  writeln('===============================');
  top := nil;
  while true do 
  begin
    writeln('Введите ФИО грузополучателя'); 
    readln(z.fio);
    writeln('Введите адрес грузополучателя'); 
    readln(z.adr);
    if z.fio = '*' then exit; 
    top := addtree(top, z); 
  end;
end;
 
procedure dobl;
begin
  writeln('Процедура добавления листа'); 
  writeln('Выход -> символ "*"'); 
  writeln('===========================');
  writeln('Введите ФИО грузополучателя'); 
  readln(z.fio);
  writeln('Введите адрес грузополучателя'); 
  readln(z.adr);
  if z.fio = '*' then exit; 
  top := addtree(top, z); 
end;
 
procedure prosmotr(top: treeptr);
begin
  if top <> nil then 
  begin
    prosmotr(top^.left);
    writeln(i, ' ', top^.data.fio, ' ', top^.data.adr); 
    i := i + 1;
    prosmotr(top^.right)
  end;
end;
 
procedure otobr(top: treeptr; otstup: integer);
begin
  if top <> nil then 
  begin
    otstup := otstup + 6;
    otobr(top^.right, otstup); 
    writeln(' ':otstup, top^.data.fio); 
    otobr(top^.left, otstup);
  end; end;
  
procedure NodeCount(top : treeptr; level : integer; var n : integer; 
                    currlevel : integer);
begin
  if top <> nil then
  begin
    NodeCount(top^.left, level, n, currlevel + 1);
    inc(n, ord(currlevel = level));
    NodeCount(top^.right, level, n, currlevel + 1);
  end;
end;
 
begin
  while true do 
  begin
    clrscr;
    writeln('1-Организация двоичного дерева'); 
    writeln('2-Добавление листа к дереву'); 
    writeln('3-Просмотр дерева');
    writeln('4-Подсчет количества вершин на n-уровне'); 
    writeln('5-Выход');
    writeln('---------------------------------');
    writeln('Введите номер пункта меню'); 
    readln(number);
    case number of 
      1: orgtree; 
      2: dobl;
      3:
        begin
          writeln('Просмотр дерева'); 
          writeln('=========================='); 
          i := 0;
          prosmotr(top); 
          otobr(top, 1); 
          writeln('enter'); 
          readln;
        end;
      4:begin
      
      writeln('Подсчет количества вершин на n-уровне'); 
      writeln('==========================');
      write('Введите значение уровня ->'); 
      readln(level);
      n:=0;
      nodecount(top,level,n,1); writeln;
      writeln('На уровне',' ',level,' ','находится',' ',n,' ','вершин'); 
      writeln('enter');
      readln;
       end;
      5: exit;
    end;
  end;
end.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2017, 11:36

Программирование с использованием структур данных
У администратора железнодорожных касс хранится информация о свободных местах в поездах дальнего...

Программирование задач с использованием комбинированного типа данных или структур
Написать программу данных задач используя комбинированный тип: Абитуриенты сдают пробные...

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

Программирование. Решение систем нелинейных уравнений
Решить систему двух нелинейных уравнений методом Ньютона. Выполнить проверку численного решения с...

Программирование разветвляющихся структур
На плоскости Х0Y расположена окружность радиуса R=2 с центром в точке (0,2). Составить программу,...

Программирование с использованием перечислений, структур
Вывести список на экран, упорядочив названия пункта назначение рейсов в алфавитном порядке После...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.