Программа работает, но не создает типизированный файл..
Записать в типизированный файл данные о 16 сотрудниках фирмы: фамилия, возраст и отношение к воинской службе (военнообязанный или нет). Определить:
- Фамилию самого младшего по возрасту человека среди военнообязанных (считать, что такой есть и он единственный);
-Фамилию самых старших по возрасту людей среди военнообязанных и среди невоеннообязанных (считать, что такие есть и они единственные в своей группе).
program Project2;
Код: Выделить всё
{$APPTYPE CONSOLE}
const
MAX_EMPLOYEE_COUNT = 16;
type
Employee = record
surname: string[30];
age: integer;
trooper: boolean; trooper2: boolean;
end;
var f:file of Employee;
j:integer;
c:integer;
employees: array[1..MAX_EMPLOYEE_COUNT] of Employee;
empCount: integer;
procedure sozdat;
begin
rewrite(f);
close(f);
end;
procedure InitEmployee;
var
i: integer;
bool: integer;
begin
Write('Enter employees count: '); readln(empCount);
if empCount > MAX_EMPLOYEE_COUNT then begin
WriteLn('Error max count ', MAX_EMPLOYEE_COUNT);
ReadLn;
Halt(1)
end;
for i := 1 to empCount do begin
WriteLn(i,':');
Write('Surname: '); ReadLn(employees[i].surname);
Write('Age: '); ReadLn(employees[i].age);
Write('Trooper 1-true, 0-false'); ReadLn(bool);
if bool = 1 then employees[i].trooper := true
else employees[i].trooper := false;
if bool = 1 then employees[i].trooper2 := false
else employees[i].trooper2 :=true ;
end;
WriteLn('Input data success!');
ReadLn;
end;
procedure FindMinAge;
var
minAge: integer;
i: integer;
begin
for i := 1 to empCount do begin
if employees[i].trooper then begin
minAge:= i
end;
end;
for i := 1 to empCount do begin
if (employees[i].trooper) and (employees[i].age < employees[minAge].age) then begin
minAge := i
end;
end;
WriteLn(employees[minAge].surname,' ', employees[minAge].age,' ', employees[minAge].trooper);
ReadLn;
end;
procedure FindMaxAge;
var
maxAge: integer;
i: integer;
begin
for i := 1 to empCount do begin
if employees[i].trooper then begin
maxAge:= i
end;
end;
for i := 1 to empCount do begin
if (employees[i].trooper) and (employees[i].age > employees[maxAge].age) then begin
maxAge := i
end;
end;
WriteLn(employees[maxAge].surname,' ', employees[maxAge].age,' ', employees[maxAge].trooper);
ReadLn;
end;
procedure FindMaxAgeF;
var
maxAgeF: integer;
i: integer;
begin
for i := 1 to empCount do begin
if employees[i].trooper2 then begin
maxAgeF:= i
end;
end;
for i := 1 to empCount do begin
if (employees[i].trooper2) and (employees[i].age > employees[maxAgeF].age) then begin
maxAgeF := i
end;
end;
WriteLn(employees[maxAgeF].surname,' ', employees[maxAgeF].age,' ', employees[maxAgeF].trooper2);
ReadLn;
end;
begin
InitEmployee;
FindMinAge;
FindMaxAge;
FindMaxAgeF
end.