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

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

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

 
 Ответить  Открыть новую тему 
> типизированные файлы
MashaM
сообщение 4.06.2013 21:52
Сообщение #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

 



- Текстовая версия 18.06.2025 16:52
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"