обе задачи похожи - отличие лишь в том, что в 1-й задаче записи помещаются в массив, а во 2-й в файл...
в обеих задачах нужно организовать ввод информации об авторах (ФИО, гонорар за книгу) и их книгах (название книги, количество страниц, тираж).
причем ввод организовать таким образом, чтобы программа запрашивала сначала ФИО автора, потом информацию о каждой его книге и гонорар за нее.
Эту информацию вывести на печать - получится что-то типа этого:
ФИО 1-го автора - ...
название 1-й книги - ...
количество страниц - ...
тираж - ...
гонорар автора за книгу - ...
название 2-й книги - ...
количество страниц - ...
тираж - ...
гонорар автора за книгу - ...
ФИО 2-го автора - ...
название 1-й книги - ...
количество страниц - ...
тираж - ...
гонорар автора за книгу - ...
название 2-й книги - ...
количество страниц - ...
тираж - ...
гонорар автора за книгу - ...
причем организовать в 2 записи: авторов (ФИО и гонорар) и книг (название книги, количество страниц, тираж).
потом всю эту информацию отсортировать по общему гонорару автора и вывести результат на печать.
во 2-й задаче все то же самое, только через файлы...
если можете, помогите :p2: - очень нужно...
сам я уже, наверно, не успею...
вот что я пока что осилил по 1-й задаче:
Код
uses crt;
type BOOK=record
ID_B:integer;
NAZ:string;
KOL:integer;
TIR:integer;
ZAP_B:integer;
end;
AVTOR=record
ID_A:integer;
FIO:string;
GON:integer;
ZAP_A:integer;
end;
ZAD=record
ID_Z:integer;
FIO:string;
NAZ:string;
KOL:integer;
TIR:integer;
GON:integer;
end;
var B:BOOK;
A:AVTOR;
MAS_B:array[1..64] of BOOK;
MAS_A:array[1..64] of AVTOR;
key1,key1_1,key2,key2_2:boolean;
ch,anykey:char;
I,K,J,L:integer;
F,F1:string;
begin
clrscr;
I:=1;
with A,B do
begin
repeat
key2:=false;key2_2:=false;
clrscr;
A.ID_A:=I;
writeln('Vvedite FIO avtora:');
readln(A.FIO);
A.ZAP_A:=I;
repeat
key1:=false;key1_1:=false;
B.ID_B:=I;
writeln('Vvedite nazvanie knigi:');
readln(B.NAZ);
writeln('Vvedite kolichestvo straniz:');
readln(B.KOL);
writeln('Vvedite tiraj knigi:');
readln(B.TIR);
writeln('Vvedite gonorar avtora za etu knigu:');
readln(A.GON);
B.ZAP_B:=I;
repeat
writeln('Budete vvodit eshe knigu?[Y,N]');
readln(ch);
If (ch in ['Y','y','N','n']) then key1_1:=true;
until key1_1;
If (ch in ['N','n']) then key1:=true;
clrscr;
MAS_A[I]:=A;
MAS_B[I]:=B;
Inc(I);
until key1;
repeat
writeln('Budete vvodit eshe avtora?[Y,N]');
readln(ch);
If (ch in ['Y','y','N','n']) then key2_2:=true;
until key2_2;
If (ch in ['N','n']) then key2:=true;
clrscr;
until key2;
end;
writeln('Dlya prodolgeniya nagmite lyubuyu klavishu...');
anykey:=readkey;
clrscr;
J:=1;L:=1;F:='';
for K:=1 to I do
with A,B do
begin
A:=MAS_A[I];
B:=MAS_B[I];
F1:=F;
F:=A.FIO;
if (K>1) and (F<>F1) then
begin
Inc(J);
L:=1;
end;
if ((L=1) or ((L>1) and (F<>F1))) then
begin
writeln('-------------------------------------------------------');
writeln('----------------- Zapis ',J,'-go avtora -------------------');
writeln('-------------------------------------------------------');
writeln('Number ',J);
writeln('FIO ',A.FIO);
writeln;
end;
if ((L=1) or ((L>1) and (F=F1))) then
begin
writeln('------------------ Zapis ',L,'-i knigi --------------------');
writeln('Number ',L);
writeln('Nazvanie ',B.NAZ);
writeln('Kolichestvo straniz ',B.KOL);
writeln('Tiraj ',B.TIR);
writeln('Gonorar avtora ',A.GON);
writeln;
Inc(L);
end;
end;
writeln('Dlya prodolgeniya nagmite lyubuyu klavishu...');
anykey:=readkey;
end.
но где-то, как всегда, ошибки - никак не могу найти где именно...