Witam.
Mam zrobić program w formie listy w pascalu.
program ma dodawać i usuwać dane , wyszukiwać i modyfikować.
status wypożyczenia ma być wprowadzany w modyfikacji.
Nie chce mi jednak on wyjść.
Czekam na pomysły lub fragment kodu wraz z wyjaśnieniem gdzie mam go wkleić.
Pozdrawiam i dzięki za odp.
program baza;
type
PElem=^TElem;
TElem= record
Tytul,
Nazwisko,
Imie,
status: string[30];
Nast:^TElem;
end;
var P,w, Elem, X,NastDoUsu,PoprzElem: ^TElem;
c ,n: integer;
s, a:string;
procedure wprowadzanie();
begin
P:=nil;
repeat
begin
New(Elem);
Write('Podaj nazwisko ');
Readln(Elem^.Nazwisko);
Write('Podaj imie ');
Readln(Elem^.Imie);
Write('Podaj tytul ');
Readln(Elem^.Tytul);
if Elem^.Nazwisko <>'' then
begin
Elem^.Nast:=P;
P:=Elem;
end;
end;
until Elem^.Nazwisko='';
Dispose(Elem);
end;
procedure szukanie();
begin
Elem:=P;
WriteLn('Podaj dane, ktore chcesz znalezc: ');
readln(s);
while Elem<>NIL do
Begin
if (Elem^.Nazwisko = s) then
Writeln(Elem^.Nazwisko);
Elem:=Elem^.Nast;
End;
WriteLn('koniec ');
end;
Procedure usuwanie();
begin
Elem:=W;
NastDoUsu:=Elem^.Nast;
writeln('nazwisko do usuniecia: ',Elem^.nazwisko);
{writeln('nazwisko do usuniecia: ',Elem^.nazwisko);}
Dispose(Elem);
if PoprzElem<>NIL then {jesli wyszukany element nie jest pierwszy}
begin
Elem:=PoprzElem;
{writeln('nazwisko przed elementem do usuniecia: ',Elem^.nazwisko);}
Elem^.Nast:=NastDoUsu;
end;
{Elem:=Elem^.Nast;
writeln('nazwisko nastepne: ',Elem^.nazwisko);}
end;
procedure edycja();
begin
Elem:=P;
WriteLn('Podaj nazwe ksiazki, ktora chcesz zmienic: ');
readln(s);
while Elem<>NIL do
Begin
if (Elem^.Nazwisko = s) then
begin
ReadLn(s) ;
Elem^.Nazwisko :=s;
end;
Elem:=Elem^.Nast;
End;
WriteLn('koniec');
end;
begin
repeat
writeln('') ;
writeln('**************************************');
writeln('wprowadzanie danych 1 ');
writeln('wyswietlanie danych 2');
writeln('wyszukiwanie danych 3');
writeln('usuwanie danych 4');
writeln('edycja danych 5');
writeln('zamnkniecie programu 6');
writeln('**************************************');
writeln('') ;
readln(c);
case c of
1:begin
wprowadzanie();
end;
2:
begin
Elem:=P;
while Elem<>NIL do
Begin
Writeln(Elem^.Nazwisko);
Elem:=Elem^.Nast;
End;
end;
3:
begin
szukanie();
writeln('usuwanie danych 1');
writeln('modyfikacja 2') ;
readln(n);
case n of
1:begin
usuwanie();
end;
2: begin
edycja();
end;
end;end;
4:
begin
usuwanie();
end;
5:
begin
edycja();
end;
end;
until (c =6 );
end.