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

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

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

> Бинарные деревья поиска, Определить пути в дереве, имеющие только
FENIX
сообщение 26.04.2005 17:21
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 45
Пол: Мужской

Репутация: -  0  +


Задание:
Дан текстовый файл. Построить дерево поиска из символов этого файла. Определить пути в дереве, имеющие только согласные буквы. Все эти вершины отметить цветом.

Моя задумка заключается в следующем: в процедуре Print сравнивать входящую информацию с инфой в массиве и, соответственно, менять цвет.
Но что-то ничего не сравнивается sad.gif
Не могу понять, как сделать правильно.


Program Lab;
Uses Crt;

Const n = 19;

Alphabet : array [1..n] of String =
  ('b', 'c', 'd', 'f', 'g', 'h', 'k', 'l', 'm', 'n', 'p', 'q', 'r',
  's', 't', 'v', 'w', 'x', 'z');

Type DataType = String;

Type BTreePtr = ^BTree;

BTree = object
       Data : DataType;
       Barrier : boolean;
       Left, Right : BTreePtr;
       LLen, RLen : word;
       Constructor Init;
       Destructor Done;
       Procedure Print(K : word);
       Procedure Add_Search(D : DataType); virtual;
       {Procedure Main;}
end;

Constructor BTree.Init;
begin
  Barrier := TRuE;
end;

Destructor BTree.Done;
begin
  If not Barrier then
  begin
     Dispose(Left, Done);
     Dispose(Right, Done);
  end;
end;

Procedure BTree.Add_Search(D : DataType);
begin
  If Barrier then
  begin
     Data := D;
     Barrier := false;
     New(Left, Init);
     New(Right, Init);
  end
  else
  If D < Data then
  Left^.Add_Search(D) else Right^.Add_Search(D);
end;

==============================

Procedure BTree.Print(K : word);
var i : word;
begin
  If not Barrier then
  begin
     Left^.Print(k + 4);
     For i := 1 to n do
     If Data = Alphabet[i] then
     begin
        TextColor(Yellow);
     end
     else
     TextColor(7);
     writeln(Data : k);
     Right^.Print(k + 4);
  end;
end;

==============================

var B1 : BTree;
  input : text;
  s, sl : string;
  i : word;

BEGIN
  ClrScr;
  assign(input, 'Lab_12.txt');
  reset(input);
  writeln('BEFORE - ', MemAvail, ' bytes.');
  writeln;
  B1.Init;

  While not EOF (input) do
  begin
     sl := '';
     Readln(input, s);
     If s[length(s)] <> ' '
     then s := s + ' ';
        For i := 1 to length(s) do
           If s[i] <> ' '
           then sl := sl + s[i]
           else
           If length(sl) <> 0 then
           begin
              B1.Add_Search(sl);
              sl := '';
           end;
  end;

  B1.Print(4);
  {B1.Main;}
  writeln;
  B1.Done;
  writeln('AFTER - ', MemAvail, ' bytes.');
  readln;

END.


Сообщение отредактировано: FENIX - 26.04.2005 17:24
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
FENIX
сообщение 26.04.2005 21:03
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 45
Пол: Мужской

Репутация: -  0  +


volvo
Блин, какой-то завал...
Я и так, и сяк переделывал твою процедуру - не работает...
У меня создалось впечатление, что программа никак не реагирует на изменения... blink.gif

З.Ы. Я из файла правильно информацию читаю? Вроде да, но заметил, что когда дерево выводится на экран, у "а" рядом стоит точка. Откуда?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 26.04.2005 21:19
Сообщение #3


Гость






Цитата(FENIX @ 26.04.05 21:03)
Я и так, и сяк переделывал твою процедуру - не работает... У меня создалось впечатление, что программа никак не реагирует на изменения...  blink.gif

А вот с этого места - поподробнее... Я этот кусок вытащил из отработавшей программы. Так вот, чтобы избежать в будущем такой ситуации, что у меня работает, а у тебя - нет, давай сразу пример тестового файла.

Это первое ... А второе: ты говоришь, что у тебя задание
Цитата
Построить дерево поиска из символов этого файла
, почему же ты хранишь СТРОКИ, а не символы? Тебе же нужно посимвольно читать файл и КАЖДЫй символ заносить в дерево поиска, ты же заносишь целые слова... Определись, что нужно...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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