IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> типизированные файлы
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 2
Пол: Женский
Реальное имя: Мария Морозова

Репутация: -  -1  +


Всем доброго времени суток!Помогите ,пожалуйста, разобраться с задачкой на файлы.

Создать типизированный файл 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.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 11.01.2025 4:19
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name