Упорядочить сведения по фамилиям авторов.
Определить, сколько в библиотеке книг, изданных в указанном году.
Определить, имеется ли книга с указанным названием. Если да, то сообщить фамилию автора и год издания. Если таких книг несколько, то сообщить имеющиеся сведения обо всех этих книгах.
Надо сделать ее на Бейсике и Паскале
Пытаюсь сортировку сделать хотя бы на Паскале. Все просмортел на форума, вроде все понятно. Попробовал в кучу использовать для своей задачи ничего не выходит. Подскажите нубу че здесь не так.
program idz1_vivod;
uses crt;
function Compare(a, b: String): Integer;
function Min(a, b: Integer): Integer;
begin
if a < b then
Min := a
else
Min := b;
end;
var
i, n, lA, lB: Integer;
begin
lA := Length(a);
lB := Length(b);
n := Min(lA, lB);
i := 1;
while (i <= n) and (a[i] = b[i]) do inc(i);
if (i > n) then begin
if (lA = lB) then Compare := 0
else
if lA > lB then Compare := - 1
else Compare := 1;
end
else
if ord(a[i]) < ord(b[i]) then
Compare := 1
else
Compare := -1
end;
type book=record
aut:string[20];
name:string[15];
year:integer;
end;
var lib:file of book;
arrtype:array[1..5] of book;
ar:array[1..5] of book;
i,j:Integer;
t:book;
begin
For i:=1 to 5 do
for j:=5 downto i+1 do
if compare(ar[pred(j)],ar[j])=-1 then begin <---- Вот здесь постоянно пишет Type mismatch.
T:=pred(j); pred(j):=ar[j]; ar[j]:=T
end
assign(lib,'idz.dat');
reset(lib);
i:=0;
while not EOF(lib) do
begin
i:=i+1;
read(lib,q[i]);
writeln(q[i].aut,' ',q[i].name,' ',q[i].year);
end;
readln;
close(lib);
sort;
end.