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

Как прочитать из файла цифры и погрузить в двоичное дерево

27.06.2019, 13:12. Показов 1364. Ответов 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
Program Derevo_Dvoich;
uses crt;
Type BT=LongInt; 
U = ^BinTree; 
BinTree = Record 
  Inf : BT; 
  L, R: U;
End;
var Num:LongInt; DEREVO:U; t:text;
 
{Рекурсивный вариант добавления элемента в дерево}
Procedure InsRec(Var Tree : U; x : BT);
Begin
   If Tree = Nil
   Then Begin 
        New(Tree);
        Tree^.L := Nil;
        Tree^.R := Nil;
        Tree^.Inf := x;
    End
   Else If (x < Tree^.inf) Then InsRec(Tree^.L, x)
    Else InsRec(Tree^.R, x);
End;
{ печати элементов дерева с использованием обхода двоичного дерева поиска в обратном порядке}
Procedure PrintTree(T : U);
begin
     if T <> Nil then 
     begin 
     PrintTree(T^.L); 
     writeln(T^.inf : 6); 
     PrintTree(T^.R);
     end;
end;
 
function find(Tree : U; x : BT) : boolean;
begin
    if Tree=nil then 
                    begin
                     find := false;            
                    writeln('False');
                    end
                else if Tree^.inf=x then 
                    begin
                    Find := True;
                    writeln('True');
                    end
                                    else if x < Tree^.inf
                                         then Find := Find(Tree^.L, x)
                                         else Find := Find(Tree^.R, x);
end;
{процедура создания двоичного дерева поиска, содержащего n элементов}
procedure sozd(f:text; var Tree: U);
var i, n,k: integer; a: bt; b:array[1..100] of LongInt;
begin
assign(f,'C:\PABCWork.NET\Files\nums.txt'); { в файле цифры от 1-9 через пробел записаны}
reset(f);
k:=0;
      Tree := nil;
      while not (eof(f)) do 
      begin
      k:=k+1;
      readln(f,b[k]);
      writeln(b[k]);
      end;
      
      for i:=1 to k do
      begin
      Insrec(Tree, b[k]);
      end;
end;
begin
DEREVO:=nil;
assign(t,'C:\PABCWork.NET\Files\nums.txt');
sozd(t,DEREVO);
writeln('ПЕчать:');
PrintTree(DEREVO);
writeln('Какое число вы хотите найти:');
readln(Num);
find(DEREVO,Num);
close(t);
writeln('END');
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.06.2019, 13:12
Ответы с готовыми решениями:

Как прочитать бинарное дерево из файла?
Здравствуйте! Функцию экспорта вроде сделал, а вот как прочитать это дерево обратно из файла - не знаю. Уж что только не пробовал.....

Как реализовать двоичное дерево?
public class BSTree&lt;T1 extends Comparable&lt;T1&gt;, T2&gt; { static class Node&lt;T1, T2&gt; { T1 key; T2 value; ...

Двоичное дерево, как организация данных
Здравствуйте! Прошу вашей помощи! :help: У меня 3 вопроса по двоичным деревьям. Помогите, пожалуйста! :gscratch: 1. Удовлетворяет ли...

1
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,381
28.06.2019, 15:35
Цитата Сообщение от Geo Kolbes Посмотреть сообщение
Господа помогите. У меня программа читает цифры из файла и погружает в двоичное дерево.Не понимаю почему записывается только первая цифра из файла:
всё работает (ну лишнее я убрал).
и не цифры, а числа.

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
program Derevo_Dvoich;
 
type
  BT = LongInt;
  U = ^BinTree;
  BinTree = Record
    Inf: BT;
    L, R: U;
  End;
 
{Рекурсивный вариант добавления элемента в дерево}
procedure InsRec(var Tree: U; x: BT);
begin
  if Tree = nil
  Then begin
    New(Tree);
    Tree^.L := nil;
    Tree^.R := nil;
    Tree^.Inf := x;
  end
  Else if (x < Tree^.inf) Then InsRec(Tree^.L, x)
  Else InsRec(Tree^.R, x);
end;
{ печати элементов дерева с использованием обхода двоичного дерева поиска в обратном порядке}
procedure PrintTree(T: U);
begin
  if T <> nil then
  begin
    PrintTree(T^.L);
    writeln(T^.inf:6);
    PrintTree(T^.R);
  end;
end;
 
function find(Tree: U; x: BT): boolean;
begin
  if Tree = nil then
  begin
    find := false;
    writeln('False');
  end
  else if Tree^.inf = x then
  begin
    Find := True;
    writeln('True');
  end
  else if x < Tree^.inf
    then Find := Find(Tree^.L, x)
  else Find := Find(Tree^.R, x);
end;
 
{процедура создания двоичного дерева поиска, содержащего n элементов}
procedure sozd(var Tree: U);
const
  txtFileName = 'nums1.txt';{'C:\PABCWork.NET\Files\nums.txt';}
var
  f: text;
  a: bt;
begin
  assign(f, txtFileName); { в файле цифры от 1-9 через пробел записаны}
  reset(f);
  Tree := nil;
  WriteLn('Читаем из файла ' + txtFileName);
  while not (eof(f)) do
  begin
    readln(f, a);
    write(a, ' ');
    Insrec(Tree, a);
  end;
  close(f);
end;
 
var
  Num: LongInt;
  DEREVO: U;
 
begin
  
  sozd(DEREVO);
  
  writeln('Печать дерева:');
  PrintTree(DEREVO);
  
  writeln('Какое число вы хотите найти:');
  readln(Num);
  find(DEREVO, Num);
  
  writeln('END');
end.
файл nums1.txt
выглядит у меня так:
Code
1
2
3
4
5
6
7
1
19
4
17
9
8
7
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.06.2019, 15:35
Помогаю со студенческими работами здесь

Картотека абонентов как двоичное дерево.
33. На междугородной телефонной станции картотека абонентов, содержащая сведения о телефонах и их владельцах, организована как двоичное...

Прочитать цифры из файла
У меня стоит такая задача: создать файл Х, и заполнить его целыми числами int, через запятую Потом нужно считать информацию из файла Х, и...

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

Англо-русский словарь построен как двоичное дерево.
Всем привет! Помогите пожалуйста с написанием программы:cry: Очень прошу:gcray: Англо-русский словарь построен как двоичное дерево. ...

Требуется прочитать поочередно цифры из файла
Задача такова. Имеется файл, в котором 3 цифры. Например, 90 90 15. Нужно прочитать эти цифры, присвоить их к a,b и с соответственно, чтобы...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru