Witam, pisze program na zaliczenie w pascalu. Program to baza danych salonu samochodowego... Opierać ma ona się na tym, że jeden samochod może zostać wypozyczony tylko przez jednego klienta, ale jeden klient może wypożyczyć wiele samochodow.
może nieco dla rozjaśnienia:
http://i.imgur.com/IpFezOJ.png
stworzyłem już strukture drzewa binarnego dla klientów(kluczem nazwisko), dla samochodów(kluczem marka) , ich wyświetlanie oraz wyszukiwanie wg marki. teraz mam 2 małe(...) problemy, z którymi męcze się od kilku godzin.
- jak zaimplementować wskaźnik z klienta na samochod, ktory on wybierze ? (wpisując id samochodu)
typy:
type
samochod = record
marka, model, silnik, wyposazenie :string[20];
cena:real;
id,id_klienta:integer;
end;
klient = record
imie,nazwisko:string[20];
id_klienta:integer;
end;
PS=^SamEle;
SamEle=record
dane:samochod;
l,r:PS;
end;
PK=^KliEle;
KliEle=record
dane:klient;
next:PK;
l,r:PK;
samochod:PS;
end;
a tutaj procedura wstawiania klienta do drzewa, w której nie wiem jak zrobić wskaźnik na wybrany samochod...
procedure wstawklienta(var root2: PK;nowy_kli:klient);
begin
if root2=nil then
begin
new(root2);
root2^.dane:=nowy_kli;
root2^.samochod:= ???????;
root2^.r:=nil;
root2^.l:=nil;
end
else
begin
if root2^.dane.nazwisko>nowy_kli.nazwisko then
wstawklienta(root2^.r,nowy_kli)
else
wstawklienta(root2^.l,nowy_kli);
end;
end;
procedure wstawsam(var root: PS;var nowy_sam: samochod);
begin
if root=nil then
begin
new(root);
root^.dane:=nowy_sam;
root^.r:=nil;
root^.l:=nil;
end
else
begin
if root^.dane.marka>nowy_sam.marka then
wstawsam(root^.r,nowy_sam)
else
wstawsam(root^.l,nowy_sam);
end;
end;
- jak zapisać i odczytać drzewo do/z pliku? z listą jednokierunkową nie miałem problemów, działała bez zarzutów, ale tam nie było rekurencji. w drzewach wykorzystuje się rekurencję...
przeszukałem chyba cały internet i rozwiązania, ani wskazówki nie znalazłem :(