Дан текстовый файл. Построить дерево поиска из символов этого файла. Определить пути в дереве, имеющие только согласные буквы. Все эти вершины отметить цветом.
Моя задумка заключается в следующем: в процедуре Print сравнивать входящую информацию с инфой в массиве и, соответственно, менять цвет.
Но что-то ничего не сравнивается
Не могу понять, как сделать правильно.
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 -