Mam duzy problem Chodzi mi o napisanie o taki program:
WYKONAJ KOLEJKE DYNAMICZNA KALEJKA TAM ZAPISUJE NAZIWSKO, IMIE, MIEJSCOWOSC. MOZNA WPISYWAC DOWLONA ILOSC OSOB DO KOLEJKI. PO WPISANIU PETENTU URZEDNIK OKRESLA ILE DZISIAJ PRZYJMIE I PODAJE TA WARTOSC. ZOSTAJA ONI USUNIECI Z KOLEJKI JAKO PRZYJECI. RESZTA ZOSTAJE W KOLEJNOSCI ZGLOSZEN WYPISANA NA EKRANIE I ZAPISANA DO PLIKU KOLEJKA.TXT
ZALOZENIA
KOLEJKA NIGDY NIE BEDZIE PUSTA NIE PRZYJMIE WIECEJ ILE JEST W KOLEJCE

Jezeli bedzie ktos w stanie mi pomoc to prosze
a tu moj program

cos jest w nim nie tak chyba zle go wykonalem jesli ktos dal by rade go poprawic to prosze:

program PRZEJSCIOWY;
{===============LISTA JEDNOKIERUNKOWA===================================}
uses CRT;
type LIST=^LI;
LI=record
IMIE:string;
NAZW:string;
MIASTO:string;
NAST:LIST;
end;
var POCZ:LIST;
STAN,ILOSC:WORD;
KEY:CHAR;
IMIE,NAZWISKO,MIASTO:string;

procedure DOPISZ(IMIE:string;NAZW:string;MIASTO:string);
var PAM:LIST;
begin
if (STAN=0)then
begin
NEW(POCZ); {OSTATNI}
POCZ^.IMIE:=IMIE;
POCZ^.NAZW:=NAZW;
POCZ^.MIASTO:=MIASTO;
POCZ^.NAST:=nil;
STAN:=STAN+1;
end
else
begin
NEW(PAM);
PAM^.IMIE:=IMIE; {NASTEPNY, LUB PIERWSZY}
PAM^.NAZW:=NAZW;
PAM^.MIASTO:=MIASTO;
PAM^.NAST:=POCZ;
POCZ:=PAM;
STAN:=STAN+1;
end;
end;

procedure POKAZ;
var PAM:LIST;
ID,ID2:WORD;
begin
CLRSCR;
WRITELN('===LISTA PETENTOW OCZEKUJACYCH NA PRZYJECIE===');WRITELN;
ID:=0;
NEW(PAM);
PAM:=POCZ;
while PAM<>nil do
begin
if(PAM^.IMIE<>'EMPTY13')and(PAM^.NAZW<>'EMPTY13')and(PAM^.MIASTO<>'EMPTY13')then
begin
ID:=ID+1;
TEXTCOLOR(LIGHTRED);write(ID,'. ');
TEXTCOLOR(3);write('IMIE : ');TEXTCOLOR(7);write(PAM^.IMIE);
TEXTCOLOR(3);write(' NAZWISKO : ');TEXTCOLOR(7);write(PAM^.NAZW);
TEXTCOLOR(3);write(' MIEJSCOWOSC : ');TEXTCOLOR(7);WRITELN(PAM^.MIASTO);
end;
PAM:=PAM^.NAST;
if(ID mod 20=0) then
begin
WRITELN('NACISNIJ DOWOLNY KLAWISZ..');
READLN;
CLRSCR;
end;
end;
end;

procedure ZAPISP;
var PAM:LIST;
PLIK:TEXT;
begin
CLRSCR;
NEW(PAM);
PAM:=POCZ;
ASSIGN(PLIK,'KOLEJKA.TXT');
REWRITE(PLIK);
while PAM<>nil do
begin
if(PAM^.IMIE<>'EMPTY13')and(PAM^.NAZW<>'EMPTY13')and(PAM^.MIASTO<>'EMPTY13')then
begin
WRITELN(PLIK,PAM^.IMIE);
WRITELN(PLIK,PAM^.NAZW);
WRITELN(PLIK,PAM^.MIASTO);
end;
PAM:=PAM^.NAST;
end;
CLOSE(PLIK);
WRITELN('LISTE ZAPISANO!!');
end;

procedure KASUJ(ILSC:WORD);
var PAM:LIST;
ILOSC2,LIC:WORD;
begin
ILOSC2:=STAN;
LIC:=0;
CLRSCR;
NEW(PAM);
PAM:=POCZ;
while PAM<>nil do
begin
LIC:=LIC+1;
if (LIC<=ILSC)and(PAM^.IMIE<>'EMTY13')
then
begin
PAM^.IMIE:='EMPTY13';
PAM^.NAZW:='EMPTY13';
PAM^.MIASTO:='EMPTY13';
PAM:=PAM^.NAST;
POCZ:=PAM;
end
else PAM:=PAM^.NAST;
end;
WRITELN('USUNIETO OBSLUZONYCH PETENTOW Z LISTY!!!');
end;

procedure MENU;
begin
CLRSCR;
WRITELN('===========MENU===========');WRITELN;
WRITELN('1. Dodaj osobe do listy ');
WRITELN('2. Usun przyj?tych petentow z listy ');
WRITELN('3. Pokaz oczekujacych na przyhecie');
wRITELN('4. Dopisz petentow na liste jutrzejsza');
WRITELN;
WRITELN('Wybierz OD 1.. do ..4 ! ESC = Wyjscie');
end;

begin
STAN:=0;
MENU;
repeat
if KEYPRESSED then
begin
KEY:=READKEY;
MENU;
case KEY of
'1':
begin
CLRSCR;
WRITELN('===DOPISYWANIE do LISTY===');
WRITELN;
write('IMIE : ');READLN(IMIE);
write('NAZWISKO : ');READLN(NAZWISKO);
write('MIASTO : ');READLN(MIASTO);
DOPISZ(IMIE,NAZWISKO,MIASTO);
end;
'2':
begin
CLRSCR;
WRITELN('===USOWANIE OBSLOZONYCH PETENTOW Z LISTY===');WRITELN;
write('Prosze wpisac liczbe petentow :');READLN(ILOSC);
KASUJ(ILOSC);
end;
'3':
begin
POKAZ;
end;
'4':
begin
ZAPISP;
end;
end;
end;
until KEY=#27;
DISPOSE(POCZ);
end.

// ale masakra - stosuj wcięcia... no i masz orty w kodzie - Ł