Подведение итога по файлу (одной степени).
Код цеха | Код участка | Таб.номер | Кол-во | Расценка за единицу | Начислено |
Итого по заводу |
Type
Rec = record
Code_z: integer;
Code_uch: integer;
Tab_nom: integer;
Kol_vo: integer;
Rasz: real;
End;
Var
Zap: rec;
Sum_file: real;
Begin
Writeln (‘ Введите имя файла на диске: ‘);
Readln (Filename)’
Assign (Mainfile, filename);
Reset (mainfile);
Sum_file:= 0;
While (not EOF (mainfile)) do
Begin
Read (Mainfile, zap);
Nachisl:= zap.kol_vo * zap.rasz;
Sum_file:= sum_file + nachisl;
End;
Writeln (‘ Итого по заводу начислено ‘,
Sum_file:10:2);
Readln;
End.
Подведение итога по по цехам и по файлу/заводу
(итоги двух степеней).
Код цеха | Код участка | Таб.номер | Кол-во | Расценка за единицу | Начислено |
Итого по цеху 1 | |||||
Итого по цеху 2 | |||||
Итого по заводу |
Вариант 1 (необходимо особо учитывать случай обработки последней записи)
Type
Rec = record
Code_z: integer;
Code_uch: integer;
Tab_nom: integer;
Kol_vo: integer;
Rasz: real;
End;
Var
Zap: rec;
Sum_z, Sum_file: real;
Code_z: integer;
Begin
Writeln (‘ Введите имя файла на диске: ‘);
Readln (Filename)’
Assign (Mainfile, filename);
Reset (mainfile);
Sum_file:= 0;
Read (Mainfile, zap);
While (not EOF (mainfile)) do
Begin
Code_z:=zap.code_z;
Sum_z:= 0;
While (not EOF (mainfile)) and
(Code_z = zap.code_z) do
Begin
Nachisl:= zap.kol_vo * zap.rasz;
Sum_z:= sum_z + nachisl;
Read (Mainfile, zap);
End;
Writeln (‘ Итого по цеху’, code_z,
‘ начислено ‘, Sum_file:10:2);
Sum_file:= sum_file + Sum_z;
End;
Writeln (‘ Итого по заводу начислено ‘,
Sum_file:10:2);
Readln; End.
{ необходимо особо учитывать случай обработки последней записи}
Итоги трёх степеней
Код цеха | Код участка | Таб.номер | Кол-во | Расценка за единицу | Начислено |
Итого по участку | |||||
Итого по участку | |||||
Итого по цеху 1 | |||||
Итого по участку | |||||
Итого по участку | |||||
Итого по цеху 2 | |||||
Итого по заводу |
Type
Rec = record
Code_z: integer;
Code_uch: integer;
Tab_nom: integer;
Kol_vo: integer;
Rasz: real;
End;
Var
Zap: rec;
Sum_uch, Sum_z, Sum_file: real;
Code_uch, Code_z: integer;
Begin
Writeln (‘ Введите имя файла на диске: ‘);
Readln (Filename)’
Assign (Mainfile, filename);
Reset (mainfile);
Sum_file:= 0;
Read (Mainfile, zap);
While (not EOF (mainfile)) do
Begin
Code_z:=zap.code_z;
Sum_z:= 0;
While (not EOF (mainfile)) and
(Code_z = zap.code_z) do
Begin
Code_uch:=zap.code_uch;
Sum_uch:= 0;
While (not EOF (mainfile)) and
(Code_z = zap.code_z) and
(Code_uch = zap.code_uch)do
Begin
Nachisl:= zap.kol_vo * zap.rasz;
Sum_uch:= sum_uch + nachisl;
Read (Mainfile, zap);
End;
Writeln (‘ Итого по участку’, code_uch,
‘ начислено ‘, Sum_uch:10:2);
Sum_z:= sum_z + Sum_uch;
End;
Writeln (‘ Итого по цеху’, code_z,
‘ начислено ‘, Sum_z:10:2);
Sum_file:= sum_file + Sum_z;
End;
Writeln (‘ Итого по заводу начислено ‘,
Sum_file:10:2);
Readln;
End.