BST obiektowy - problem

0

Witam,
Potrzebuję napisać program z osobnymi modułami, który z pliku wczytanego tworzy drzewo binarnych poszukiwań i potem wyświetla dane (już posortowane). Mam problem przy wypisywaniu. Nie jestem pewien (pewnie nie) czy dobrze korzystam z obiektów.
Proszę o pomoc.
Plik operacje.pas

unit operacje;
interface

type tree = ^ node;
     node = record
     left, right:tree;
     imie, nazwisko:string;
end;
type
  ODane = object
     korzen:tree;
     procedure wczytaj_do_BST();        //2
     procedure wyswietl_BST(n:tree);    //3
end;

implementation

procedure wstaw(n:tree;imie,nazwisko:string);
begin 
if n=nil then 
begin 
        new(n); 
        n^.imie:=imie;
        n^.nazwisko:=nazwisko;
        n^.left:=nil;
        n^.right:=nil;
        writeln(nazwisko);
end 
else if nazwisko<n^.nazwisko then
        wstaw(n^.left,imie,nazwisko)
else 
        wstaw(n^.right,imie,nazwisko);
end;

procedure ODane.wczytaj_do_BST();
var
   f:text;
   wiersz:string;
begin
     assign(f, 'C:\Users\pioncz\Documents\kurs pascal\zad41\dane.txt');
     reset(f);
     while not eof(f) do
     begin
          readln(f,wiersz);
          wstaw(korzen,wiersz,wiersz);
     end;
     close(f);
end;

procedure ODane.wyswietl_BST(n:tree);
begin 
writeln(n^.nazwisko);
end; 

begin
end.

Plik main.pas

program zad41;
uses operacje;

var
jakas_zmienna : ODane;

begin
     jakas_zmienna.korzen:=nil;
     //jakas_zmienna.wyswietl();
     jakas_zmienna.wczytaj_do_BST();
     jakas_zmienna.wyswietl_BST(jakas_zmienna.korzen);
     readln;
end.
1
procedure wstaw(var n:tree;imie,nazwisko:string); // inaczej nie będzie działać poprawnie.
...

procedure ODane.wyswietl_BST(n:tree);
begin
   if n<>nil then
   begin
     wyswietl_BST(n^.left);
     writeln(n^.nazwisko);
     wyswietl_BST(n^.right);
   end;
end; 
0

Zapomniałem dodać, że dla wyświetlania tylko nazwiska mi nie działa. Mam wrażenie, że to przez złe wykorzystanie obiektowości. Działa to komuś? Plik może być objętnie jaki, byle byłoby kilka linijek tekstu.

Działa super : ] myślałem, że zmieniłeś tylko 2 linijki : P

Nie znalazłem info żeby tak robić : / Mógłbyś jeszcze napisać dlaczego tak powinno być?

1 użytkowników online, w tym zalogowanych: 0, gości: 1