Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 15

Создание и прошивка бинарного дерева: Ошибка переполнения стека

03.03.2015, 20:08. Показов 1191. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть программа создания и прошивки бинарного дерева.При формировании первоначального дерева и вывода его на экран все работает.Но затем,если добавлять элементы в левое поддерево возникает ошибка переполнения ,хотя если добавлять в правое все работает.Помогите как исправить.
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
program p5_1;
 
type
  BT = longint;
  u = ^bintree;
  bintree = record
    inf: BT;
    ltag, rtag: boolean;
    l, r: u;
  end;
var
  i, n, a, b, z: integer;
var
  treet, y,root: u;
 
procedure sozd(a: bt; var tree: u);
begin
  if tree = nil then begin
    new(tree);
    tree^.inf := a;
    tree^.l := nil;
    tree^.r := nil; end
  else if a < tree^.inf then sozd(a, tree^.l)
  else  sozd(a, tree^.r);
end;
 
procedure sim_print(x:u);
procedure r_sew( parent: u);
begin
  if y <> nil then begin
    if y^.r = nil then begin
      y^.rtag := true;
      y^.r := parent;
    end
    else y^.rtag := false;
  end;
  y := parent;
 
end;
begin
if x <> nil then begin
  sim_print(x^.l);
    r_sew(x);
    sim_print(x^.r);  
    end;    
    end;
procedure obxod(x: u);
begin
  writeln('obxod proshitogo dereva:');
  while x <> nil do
  begin
    while x^.l <> nil do x := x^.l;
    writeln(x^.inf);
    while x^.rtag = true do
    begin
      x := x^.r;
      if x=nil then exit;
      writeln(x^.inf);
    end;
    x := x^.r;
  end;
end;
 
procedure printtree(tree: u);
begin
  if tree <> nil then begin
    printtree(tree^.l);
    write(tree^.inf:6);
    printtree(tree^.r );
  end;
end;
begin
 
  y := nil;
  writeln('Vvod N');
  readln(n);  
   writeln('Vvod elementov');
  for i := 1 to n do
  begin
    readln(a);
    sozd(a, treet);
  end;
  root:=treet;
  writeln('Vivod dereva* ');
  printtree(treet);
  writeln;
  sim_print(treet);
  writeln(treet);
  obxod(treet);
  writeln('   **Menu**');
writeln('1-dobavlenie elementa*');
writeln('2-ydalenie elementa*');
writeln('0-vihod');
writeln('Vash vibor ');
readln(b);
case b of
1:begin
writeln('Vvedite novii element ');
readln(a);
sozd(a,treet);
sim_print(treet);
obxod(treet);
writeln;
end;
0:exit;
end;
  readln;
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.03.2015, 20:08
Ответы с готовыми решениями:

Ошибка переполнения стека
При запуске программы на исполнение выдает ошибку: &quot;202. Ошибка переполнения стека&quot;. Что это такое и как решить эту проблему? Если...

Создание бинарного дерева по данной скобочной записи
Суть задачи такова: на вход подается файл, в нем записана скобочная запись бинарного дерева, по ней нужно построить дерево. Помогите с...

Прошивка бинарного дерева на С++
Уважаемые программисты! Может у кого то есть опыт по написанию программы по прошивке бинарного дерева на С++ или подскажет по какому...

1
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8644 / 4479 / 1669
Регистрация: 01.02.2015
Сообщений: 13,883
Записей в блоге: 11
04.03.2015, 10:01
Мне кажется, что присутствуют ошибки:
1. Отсутствие инициализации переменных в основной программе.
2. Наличие глобальных переменных (y).
3. Закоментируй строку с вызовом sim_print и всё заработает - значит ошибка в реализации sim_print
4. Не освобождается память перед завершением программы.
------------------
Открой для себя отладчик - набери в поисковике "отладка в FreePascal" или "отладка в turbopascal" - они очень похожи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.03.2015, 10:01
Помогаю со студенческими работами здесь

Ошибка переполнения стека
Уважаемые форумчане! Такая проблема. Необходимо поработать в PascalABC.NET с двумя достаточно большими массивами: - один на 2500...

Ошибка переполнения стека
При компиляции всё нормально но при запуске ошибка uses crt; type mas1=array of integer; mas2=array of real; var...

Ошибка переполнения стека.
Имеем программу uses CRT; const n = 50; type tzapis = record FIO :string; indeks :longint;

202: Ошибка переполнения стека
У меня и в колледже и дома стоит SchoolPack. Но дома, когда я делаю одну работу возникает ошибка 202: Ошибка переполнения стека. В колледже...

Ошибка переполнения стека в консольном приложении
В Delphi ранее работал только с формами, а тут дали задание консольное приложение слепить. По заданию нужно сделать три класса с...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru