Создать типизированный файл Zarpl.dat, содержащий сведения о заработной плате сотрудников:
- № отдела;
- ФИО;
- сумма к получению.
а) обеспечить просмотр файла в табличной форме;
б) распечатать ведомость, упорядочив данные по отделам;
в) найти отдел с самой высокой средней заработанной платой;
Не могу сделать пункт в).Я отсортировала элементы по отделам. Не получается найти среднюю зар.плату по этим отсортированным отделам.
Пока отделы совпадают,я ищу сумму заработных плат и количество работников,как отделы перестают совпадать,нахожу среднюю зар.плату по отделу,меняю отдел и обнуляю сумму и количество.После этого надо записать отдел и зарплату в другой файл,но у меня не получается это сделать,т.к. не совпадают тип файла,средняя зар.плата и отдел.
Program Fail;
Uses Crt;
Type zar=record
otdel:integer;
FIO : string;
summa:integer;
end;
Var s1:zar;
F,H: file of zar ; k,s,z,i,j,c:integer; sr,max:real;
a,b:zar;
otv:char;
begin
ClrScr;
Assign(F,'D:/Masha/Zarpl.dat');
rewrite(F);
Assign(H,'D:/Masha/sveden.dat');
rewrite(H);
repeat
with s1 do
begin
writeln('nomer otdela ');
readln(otdel);
writeln('FIO:');
readln(FIO);
writeln('Summa k poluch');
readln(summa);
write(F,S1);
end;
writeln('prodolzhenie - lubaya klavisha');
writeln('zaconchit-n');
readln(otv);
until (otv='n') or (otv='N');
close(F);
reset(F);
writeln;
writeln('Nomer otdela',' ',FIO',' ','Summa k poluch',' ');
while not eof(F) do
begin
read(F,a);
writeln(a.otdel:5,' ',a.FIO:10,' ',a.summa:5,' ');
end;
close(f);
writeln;
{b}
reset(F);
For i:=1 to filesize(f)-1 do
begin
seek(f,0);
For j:=1 to filesize(f)-i do
begin
read(F,a);
read(F,b);
if a.otdel>b.otdel then
begin
seek(f,filepos(f)-2);
write(F,b);
write(f,a);
end;
seek(f,filepos(f)-1);
end;
end;
close(f);
reset(f);
writeln('Nomer otdela',' ',FIO',' ','Summa k poluch',' ');
while not eof(F) do
begin
read(F,a);
writeln(a.otdel:5,' ',a.FIO:10,' ',a.summa:5,' ');
end;
close(f);
{в}
writeln;
reset(f);
s:=0;
k:=0;
For i:=1 to filesize(f) do
begin
read(F,a);
a.otdel:=c;
if a.otdel=c then
begin
s:=s+a.summa;
k:=k+1;
end
else
begin
sr:=s/k;
write(H,a.otdel,sr);{не пойму как записать отдел и среднюю з.п в один файл}
k:=1;
seek(f,filepos(f)+1);
c:=a.summa;
end;
end;
Close(f);
reset(h);
while not eof(h) do
begin
read(h,a);
writeln('Nomer otdela',' ','srednyaya zarplata');
end;
reset(h);
max:=0;
while not eof(H) do
begin
read(h,a);
if sr > max then
begin
max:=sr;
z:=a.otdel;
end;
Writeln('в ',z,'-м отделе самая высокая средняя заработная плата.');
end;
close(h);
end.