Текст программы

program Lab5;

{$APPTYPE CONSOLE}

uses SysUtils;

 

type

Worker=record

Name:string;

Days:Integer;

Salary,Pay:Real;

end;

 

var

Days:Integer;

W:array [0..1000] of Worker;

n:Integer;

Total:Real;

 

procedure Load(const Name:string);

var

F:Text;

begin

Assign(F,Name);

Reset(F);

 

Readln(F,Days);

n:=0;

while not Eof(F) do

begin

Inc(n);

Readln(F,W[n].Name);

Readln(F,W[n].Days,W[n].Salary);

end;

 

Close(F);

 

Writeln('Считано строк: ',n);

end;

 

procedure Calc;

var

i:Integer;

begin

Total:=0;

for i:=1 to n do

begin

W[i].Pay:=Round(W[i].Salary*W[i].Days/Days*100)
/100;

Total:=Total+W[i].Pay;

end;

end;

 

procedure Save(const Name:string);

var

F:Text;

i:Integer;

begin

Assign(F,Name);

Rewrite(F);

 

Writeln(F,'+-------…-------+---+---…---+---…----+');

Writeln(F,'| Фамилия |Дни| Оклад |Зарплата|');

Writeln(F,'+-------…-------+---+---…---+---…----+');

for i:=1 to n do

Writeln(F,'|',W[i].Name,'':40-Length(W[i].Name),
'|',W[i].Days:3,'|',W[i].Salary:10:2,
'|',W[i].Pay:10:2,'|');

Writeln(F,'+-------…-------+---+---…---+---…----+');

Writeln(F,'|Итого |',
Total:10:2,'|');

Writeln(F,'+-------…-------+---+---…---+---…----+');

 

Close(F);

end;

 

procedure SortByName;

var

Stop:Boolean;

Last,Cmp,i:Integer;

Temp:Worker;

begin

Last:=n;

Cmp:=0;

repeat

Stop:=True;

Dec(Last);

for i:=1 to Last do

begin

Inc(Cmp); {Подсчет количества сравнений}

if W[i].Name>W[i+1].Name then

begin

Temp:=W[i];

W[i]:=W[i+1];

W[i+1]:=Temp;

Stop:=False;

end;

end;

until Stop;

Writeln('Сравнений при сортировке по имени: ',Cmp);

end;

 

procedure SortByPay;

var

Stop:Boolean;

Last,Cmp,i:Integer;

Temp:Worker;

begin

Last:=n;

repeat

Stop:=True;

Dec(Last);

for i:=1 to Last do

begin

Inc(Cmp); {Подсчет количества сравнений}

if W[i].Pay>W[i+1].Pay then

begin

Temp:=W[i];

W[i]:=W[i+1];

W[i+1]:=Temp;

Stop:=False;

end;

end;

until Stop;

Writeln('Сравнений при сортировке по зарплате:',Cmp);

end;

 

begin

Load('Workers.txt');

Calc;

Save('Pay.txt');

 

SortByName;

Save('ByName.txt');

 

SortByPay;

Save('ByPay.txt');

 

Readln; {Задержка для консольных приложений}

end.