Witam. Do napisania mam program pod tytułem : "Książka kucharska". Aktualnie udało mi się napisać część odpowiedzialną za dodawanie elementów, wyszukiwanie (według podanych przez użytkownika składników). Mam mianowicie problem z usuwaniem wybranego sładnika i usuwaniem całych potraw. Typy są takie :
program ksiazka_new;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
{rekord nagłówkowy}
TPotrawa = record
ID : word; {identyfikator potrawy}
Nazwa : string[255]; {nazwa potrawy}
Opis : string[255]; {opis potrawy}
end;
TSkladnik = record
ID : word; {identyfikator skladnika}
Nazwa : string[255]; {nazwa skladnika}
Ilosc : single; {ilosc skladnika np. 2 jajka}
end;
{Lista potraw}
PListaPotraw = ^TListaPotraw;
TListaPotraw = record
Potrawa : TPotrawa; {zmienna typu rekordowego}
nast : PListaPotraw; {wskaźnik na następny}
pop : PListaPotraw; {wskaźnik na poprzedni}
end;
{Lista skladników}
PListaSkladnikow = ^TListaSkladnikow;
TListaSkladnikow = record
Skladnik : TSkladnik; {zmienna typu rekordowego}
nast : PListaSkladnikow; {wskaźnik na następny}
pop : PListaSkladnikow; {wskaźnik na poprzedni}
end;
Dodawanie potraw i składników wygląda tak :
procedure dodaj_potrawe(pamiec : TPotrawa);
begin
if ListaPotraw = nil then
begin
new(ListaPotraw);
ListaPotraw^.nast := nil;
ListaPotraw^.pop := nil;
ListaPotraw^.Potrawa := pamiec;
end
else
begin
ustaw_potrawy(true);
new(ListaPotraw^.nast);
ListaPotraw^.nast^.pop := ListaPotraw;
ListaPotraw := ListaPotraw^.nast;
ListaPotraw^.nast := nil;
ListaPotraw^.Potrawa := pamiec;
end;
end;
procedure dodaj_skladniki(pamiec : TSkladnik);
begin
if ListaSkladnikow = nil then
begin
new(ListaSkladnikow);
ListaSkladnikow^.nast := nil;
ListaSkladnikow^.pop := nil;
ListaSkladnikow^.Skladnik := pamiec;
end
else
begin
ustaw_skladniki(true);
new(ListaSkladnikow^.nast);
ListaSkladnikow^.nast^.pop := ListaSkladnikow;
ListaSkladnikow := ListaSkladnikow^.nast;
ListaSkladnikow^.nast := nil;
ListaSkladnikow^.Skladnik := pamiec;
end;
end;
skladniki dodawane sa do tablicy :
if AnsiSameText(polecenie, 'DODAJ') then
begin
Potrawa.ID := tworz_identyfikator;
writeln('Wpisz nazwe potrawy. Wpisz #exit aby anulowac.');
write('Nazwa : ');
readln(znak);
if znak = '#exit' then
exit;
Potrawa.Nazwa := znak;
Skladnik.ID := Potrawa.ID;
writeln('Wpisz kolejno skladniki i ilosc. Aby zakonczyc wpisz #end. ');
while znak <> '#end' do
begin
write('Nazwa skladnika : ');
readln(znak);
if znak <> '#end' then
begin
Skladnik.Nazwa := znak;
write('Ilosc skladnika : ');
readln(i_znak);
Skladnik.Ilosc := i_znak;
dodaj_skladniki_do_pliku(Skladnik);
end;
end;
dodaj_potrawe_do_pliku(Potrawa);
zwolnij_pam;
laduj_potrawy;
laduj_skladniki;
writeln('Zaladowano '+IntToStr(Skladniki)+' skladnikow w '+IntToStr(Potrawy)+' potrawach.');
exit;
end;
Bardzo prosił bym o pomoc w rozwiązaniu tego problemu. Jeżeli nie na forum to podaj mój e-mail :
Z góry dziękuje za wszelką pomoc.
Pozdrowienia