Задача 5.2.1.
Условие
Составить программу для обработки информации о некоторых объектах – студентах какого-то факультета. Каждый объект характеризуется совокупностью признаков.
Подсчитать число студентов, которые моложе 16 лет, и вывести все данные о них.
Листинг
BirthDate: TDateTime;
Gender: TGender;
Phys, Mat, Inf: shortint;
Salary: integer;
end;
TStudentList = array of TStudent;
function GenderToStr(a: TGender): string;
begin
case a of
gMale: Result := 'Мужской';
gFemale: Result := 'Женский';
end;
end;
function Student(Group, Name, BirthDate: string; Gender: TGender; Phys, Mat, Inf: shortint; salary: integer): TStudent;
var
s: TStudent;
begin
s.Group := Group;
s.Name := Name;
s.BirthDate := StrToDate program project1;
uses
SysUtils, Classes, dateutils;
type
TGender = (gMale, gFemale);
TStudent = record
Group: string;
Name: string (BirthDate);
s.Gender := Gender;
s.Phys := Phys;
s.Mat := Mat;
s.Inf := Inf;
s.Salary := salary;
Result := s;
end;
function LoadStudents(): TStudentList;
var
SFile: TStringList;
G: TGender;
i: integer;
SList: TStudentList;
begin
SFile := TStringList.Create();
SFile.LoadFromFile('Students.csv');
with TStringList.Create() do
begin
Delimiter := ':';
QuoteChar := '"';
StrictDelimiter := True;
for i:=0 to SFile.Count-1 do
begin
DelimitedText := SFile.Strings[i];
SetLength(SList, length(SList) + 1);
G := TGender(StrToInt(Strings[3]));
SList[High(SList)] := Student(Strings[0], Strings[1], Strings[2], G,
StrToInt(Strings[4]), StrToInt(Strings[5]),
StrToInt(Strings[6]), StrToInt(Strings[7]));
end;
end;
Result := SList;
end;
procedure PrintStudents(const a: TStudentList);
var
i: integer;
begin
for i:=Low(a) to High(a) do
begin
writeln('-----------------------');
writeln('Студент ', a[i].Name);
writeln(' Группа: ', a[i].Group);
writeln(' Дата рождения: ', FormatDateTime('DD.MM.YYYY', a[i].BirthDate));
writeln(' Пол: ', GenderToStr(a[i].Gender));
writeln(' Оценки:');
writeln(' -Физика: ', a[i].Phys);
writeln(' -Математика: ', a[i].Mat);
writeln(' -Информатика: ', a[i].Inf);
writeln(' Стипендия: ', a[i].Salary);
end;
end;
procedure PrintSpecificStudents(const a: TStudentList);
var
sl: TStudentList;
i: integer;
begin
//Найдём студентов моложе 16-ти лет
for i:=Low(a) to High(a) do
begin
if YearsBetween(a[i].BirthDate, Date) < 16 then
begin
SetLength(sl, length(sl)+1);
sl[High(sl)] := a[i];
end;
end;
writeln('Общее количество студентов: ', length(a));
writeln('Количество студентов моложе 16-ти: ', length(sl));
if length(sl) > 0 then
begin
writeln('Список:');
PrintStudents(sl);
end;
end;
var
Students: TStudentList;
begin
Students := LoadStudents();
PrintSpecificStudents(Students);
readln();
end.
Результаты работы программы
Переменные
Класс |
Имя |
Тип |
Структура |
Назначение |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Блок-схема