Witam.
Skleiłem jaki oto program, chciałem dodać sortowanie ale nie działa mi to niestety. Może mi ktoś powiedzieć co jest nie tak?
program baza;
uses
crt;
type
ksiegarnia = record
tytul, autor, rok, numer:string[20];
cena: Real;
ilosc:Byte;
end;
var
Klaw,
Klawisz2:char;
Licznik:byte;
t1,p1:byte;
plik:text;
p2:single;
r:array[1..50] of ksiegarnia;
procedure wprowadz;
begin
clrscr;
Licznik:=Licznik+1;
write('Tytul : ');
readln(r[Licznik].tytul);
write('Autor : ');
readln(r[Licznik].autor);
write('Rok : ');
readln(r[Licznik].rok);
write('Numer ISBN: ');
readln(r[Licznik].numer);
write('Cena : ');
readln(r[Licznik].cena);
write('Ilosc : ');
readln(r[Licznik].ilosc);
end;
procedure pusta;
begin
writeln('Baza jest aktualnie pusta. Dodaj nowe wpisy lub wczytaj juz istniejace z pliku');
writeln;
writeln('Nacisnij jakis klawisz...');
Klawisz2:=readkey;
end;
procedure wyswietl;
begin
if Licznik=0
then
pusta
else
begin
writeln('Tytul : ', r[t1].tytul);
writeln('Autor : ', r[t1].autor );
writeln('Rok : ', r[t1].rok);
writeln('Numer ISBN: ', r[t1].numer);
writeln('Cena : ', r[t1].cena:4:2);
writeln('Ilosc : ', r[t1].ilosc);
writeln('Wartosc : ', (r[t1].ilosc*r[t1].cena):4:2);
writeln;
end
end;
procedure edytuj;
begin
clrscr;
if Licznik=0
then
pusta
else
begin
writeln('Ktory wpis chcesz edytować (1..', Licznik, ')');
readln(t1);
write('Nowy tytul : ');
readln(r[t1].tytul);
write('Nowy autor : ');
readln(r[t1].autor);
write('Nowy rok wydania : ');
readln(r[t1].rok);
write('Nowy numer ISBN: ');
readln(r[t1].numer);
write('Nowa cena : ');
readln(r[t1].cena);
write('Nowa ilosc : ');
readln(r[t1].ilosc);
end
end;
procedure wszystko;
begin
clrscr;
if (Licznik<>0) then
begin
t1:=0;
repeat
t1:=t1+1;
wyswietl;
until t1=Licznik;
end
end;
procedure zapisz;
begin
if Licznik=0 then
begin
clrscr;
pusta;
end
else
begin
assign(plik, 'BAZA.txt');
rewrite(plik);
writeln(plik, Licznik);
t1:=0;
repeat
t1:=t1+1;
writeln(plik, r[t1].tytul);
writeln(plik, r[t1].autor);
writeln(plik, r[t1].rok);
writeln(plik, r[t1].numer);
writeln(plik, r[t1].cena);
writeln(plik, r[t1].ilosc);
until t1=Licznik;
close(plik);
end
end;
procedure czytaj;
begin
assign(plik, 'BAZA.txt');
reset(plik);
readln(plik, Licznik);
t1:=0;
repeat
t1:=t1+1;
readln(plik, r[t1].tytul);
readln(plik, r[t1].autor);
readln(plik, r[t1].rok);
readln(plik, r[t1].numer);
readln(plik, r[t1].cena);
readln(plik, r[t1].ilosc);
until t1=Licznik;
close(plik);
end;
procedure usun;
begin
clrscr;
if Licznik=0 then pusta
else
begin
writeln('Podaj numer wpisu do usuniecia (1..', Licznik, ')');
readln(t1);
repeat
r[t1].tytul:= r[t1+1].tytul;
r[t1].autor:= r[t1+1].autor;
r[t1].rok:= r[t1+1].rok;
r[t1].numer:= r[t1+1].numer;
r[t1].cena:= r[t1+1].cena;
r[t1].ilosc:= r[t1+1].ilosc;
t1:=t1+1;
until t1=Licznik;
Licznik:=Licznik-1;
end
end;
procedure info;
begin
if Licznik=0 then pusta
else
begin
t1:=0;
p1:=0;
p2:=0;
repeat
t1:=t1+1;
p1:=p1+r[t1].ilosc;
p2:=p2+(r[t1].ilosc*r[t1].cena);
until t1=Licznik;
if p1=1
then writeln('Posiadasz ', p1, ' ksiazke o wartosci ', p2:4:2, ' zl.');
if (p1=2) or (p1=3) or (p1=4)
then writeln('Posiadasz ', p1, ' ksiazki o lacznej wartosci ', p2:4:2, ' zl.');
if p1>=5
then writeln('Posiadasz ', p1, ' ksiazek o lacznej wartosci ', p2:4:2, ' zl.');
writeln('Nacisnij jakis klawisz...');
Klawisz2:=readkey;
end
end;
procedure soruj_wg_nazwy(n:integer;var t:ksiegarnia);
var i,j:integer;
procedure zamien_dane(var a,b:ksiegarnia);
var c:ksiegarnia;
begin
c:=a;
a:=b;
b:=c;
end;
begin
for i:=1 to n-1 do
for j:=1 to n-i do
if t[j].tytul>t[j+1].tytul then zamien_dane(t[j],t[j+1])
end;
procedure sort;
begin
Licznik:= 0;
repeat
writeln('1. Sorotwanie wedlug tytulu');
writeln('2. Sortowanie wedlug autora');
writeln('3. Sortowanie wedlug roku');
writeln('4. Sortowanie wedlug ceny');
writeln('5. Sortowanie wedlug roku wwydania');
writeln('6. <-- Powrot ');
repeat Klaw:= readkey; until (Klaw>='1') and (Klaw<='6');
if Klaw='1' then sortuj;
until Klaw='6';
end;
begin
Licznik:= 0;
repeat
clrscr;
writeln('1. Nowy wpis');
writeln('2. Usun wpis');
writeln('3. Wyswietlanie wpisu');
writeln('4. Wyswietlanie wszystkich wpisw');
writeln('5. Odczyt z pliku');
writeln('6. Zapis do pliku');
writeln('7. Stan zbioru ksiazek' );
writeln('8. Sortuj');
writeln('9. Koniec programu');
repeat Klaw:= readkey; until (Klaw>='1') and (Klaw<='9');
if Klaw='1' then wprowadz;
if Klaw='2' then usun;
if Klaw='3' then
begin
clrscr;
write('Podaj numer wpisu (1..', Licznik, '): ');
readln(t1);
wyswietl;
writeln;
writeln('Wcisnij jakis klawisz...');
Klawisz2:=readkey;
end;
if Klaw='4' then begin wszystko; info; end;
if Klaw='5' then czytaj;
if Klaw='6' then zapisz;
if Klaw='7' then begin clrscr; info; end;
if Klaw='8' then begin clrscr; sort; end;
until Klaw='9';
end.