{$R *.dfm}
type // Создание типа данных "запись"(record), имя типа - zap
zap=record
nzach :integer;
fio:string[20];
mat,fiz,inf:integer;
srb:extended;
end;
Var
MZap:array[1..9] of zap; // объявление массива записей
procedure TForm1.FormCreate(Sender: TObject);
Var
i:integer;
Begin
withStringGrid1 do
begin// занесение информации в ячейки StringGrid1
Cells[0,0]:='№ п/п';
Cells[1,0]:='№ зачетной книжки';
Cells[2,0]:='Фамилия';
Cells[3,0]:='Математика';
Cells[4,0]:='Физика';
Cells[5,0]:='Информатика';
for i:=1 to9 do
Cells[0,i]:=IntToStr(i);
Cells[1,1]:='223254';Cells[2,1]:='Первый Н.П.'; Cells[3,1]:='3'; Cells[4,1]:='4';
Cells[5,1]:='4';
Cells[1,2]:='233254';Cells[2,2]:='Второй А.Н.'; Cells[3,2]:='5'; Cells[4,2]:='5';
Cells[5,2]:='5';
Cells[1,3]:='123754'; Cells[2,3]:='Третий Н.П.'; Cells[3,3]:='4'; Cells[4,3]:='5';
Cells[5,3]:='4';
Cells[1,4]:='216254';Cells[2,4]:='Четвертый Н.П.';Cells[3,4]:='3'; Cells[4,4]:='3';
Cells[5,4]:='2';
Cells[1,5]:='329270';Cells[2,5]:='Пятый Н.П.';Cells[3,5]:='5'; Cells[4,5]:='4';
Cells[5,5]:='5';
Cells[1,6]:='290176';Cells[2,6]:='Шестой Н.П.'; Cells[3,6]:='5'; Cells[4,6]:='3';
Cells[5,6]:='4';
Cells[1,7]:='218425';Cells[2,7]:='Седьмой Н.П.';Cells[3,7]:='3';Cells[4,7]:='2';
Cells[5,7]:='4';
Cells[1,8]:='223054';Cells[2,8]:='Восьмой Н.П.';Cells[3,8]:='2';Cells[4,8]:='2';
Cells[5,8]:='4';
Cells[1,9]:='219325';Cells[2,9]:='Девятый Н.П.';Cells[3,9]:='5';Cells[4,9]:='5';
Cells[5,9]:='4';
for i:=1 to 9 do
with MZap[i] do
begin // формирование полей массива записей
nzach:=StrToInt(Cells[1,i]);
fio:=Cells[2,i];
mat:=StrToInt(Cells[3,i]);
fiz:=StrToInt(Cells[4,i]);
inf:=StrToInt(Cells[5,i]);
end;
end;
end;
{ Сортировка записей в порядке убывания среднего балла}
procedureTForm1.Button1Click(Sender: TObject); var
i,j: integer;
rab: zap; // Рабочая переменная для обмена значениями двух элементов
// массива при сортировке
Begin
for i:=1 to 9 do
with StringGrid1,MZap[i] do
begin// формирование полей массива записей при нажатии Button1
nzach:=StrToInt(Cells[1,i]);
fio:=Cells[2,i];
mat:=StrToInt(Cells[3,i]);
fiz:=StrToInt(Cells[4,i]);
inf:=StrToInt(Cells[5,i]);
srb:=(mat+fiz+inf)/3 // Расчет среднего балла
end;
for i:=2 to 9 do// Сортировка массива записей по убыванию среднего
//балла
for j:=9 downto i do // методом пузырька
ifMZap[j-1].srb<MZap[j].srb then
Begin
rab:=MZap[j-1];
MZap[j-1]:=MZap[j];
MZap[j]:=rab;
end;
withStringGrid2 do// Очистка ячеек StringGrid2
for i:=0 to 9 do
for j:=0 to 9 do
Cells[j,i]:=' ';
with StringGrid2 do
begin // Пересылка заголовков столбцов в первую строку
//StringGrid2
Cells[0,0]:='№ п/п';
Cells[1,0]:='№ зачетной книжки';
Cells[2,0]:='Фамилия';
Cells[3,0]:='Математика';
Cells[4,0]:='Физика';
Cells[5,0]:='Информатика';
Cells[6,0]:='Средний балл';
for i:=1 to9 do
withMZap[i] do
begin// Занесение информации в остальные ячейки
//StringGrid2
Cells[0,i]:=IntToStr(i); // из рассортированного массива Mzap
Cells[1,i]:=IntToStr(nzach);
Cells[2,i]:=fio;
Cells[3,i]:=IntToStr(mat);
Cells[4,i]:=IntToStr(fiz);
Cells[5,i]:=IntToStr(inf);
Cells[6,i]:=floatToStrF(srb,ffFixed,5,2);
end;
end;
end;
{ Вывод списка неуспевающих студентов}
procedure TForm1.Button2Click(Sender: TObject); var
i,j:integer;
Begin
for i:=1 to 9 do
withStringGrid1,MZap[i] do
begin // Занесение данных в массив записей
nzach:=StrToInt(Cells[1,i]);
fio:=Cells[2,i];
mat:=StrToInt(Cells[3,i]);
fiz:=StrToInt(Cells[4,i]);
inf:=StrToInt(Cells[5,i]);
srb:=(mat+fiz+inf)/3
end;
with StringGrid3 do// Очистка ячеек StringGrid3
for i:=0 to 9 do
forj:=0 to9 do
Cells[j,i]:=' ';
with StringGrid3 do
begin // Занесение заголовков столбцов в первую строку StringGrid3
Cells[0,0]:='№ п/п';
Cells[1,0]:='№ зачетной книжки';
Cells[2,0]:='Фамилия';
Cells[3,0]:='Математика';
Cells[4,0]:='Физика';
Cells[5,0]:='Информатика';
Cells[6,0]:='Средний балл';
j:=0;
fori:=1 to 9 do //Занесение только данных о неуспевающих студентах в
// StringGrid3
with MZap[i] do
if (mat=2) or (fiz=2) or(inf=2) then
Begin
j:=j+1;
Cells[0,j]:=IntToStr(j);
Cells[1,j]:=IntToStr(nzach);
Cells[2,j]:=fio;
Cells[3,j]:=IntToStr(mat);
Cells[4,j]:=IntToStr(fiz);
Cells[5,j]:=IntToStr(inf);
Cells[6,j]:=floatToStrF(srb,ffFixed,5,2);
end;
end;
end;
{ Определение наибольшего и наименьшего номеров зачетных книжек}
procedure TForm1.Button3Click(Sender: TObject);
Var
i, min, max, k, l: integer;
Begin
for i:=1 to 9 do
withStringGrid1,MZap[i] do
begin// Занесение данных в массив записей при нажатии кнопки Batton3
nzach:=StrToInt(Cells[1,i]);
fio:=Cells[2,i];
mat:=StrToInt(Cells[3,i]);
fiz:=StrToInt(Cells[4,i]);
inf:=StrToInt(Cells[5,i]);
srb:=(mat+fiz+inf)/3
end;
max:=MZap[1].nzach; k:=1; // занесение № первой зачетки в ячейку max
min:=MZap[1].nzach; l:=1; // занесение № первой зачетки в ячейку min
for i:=1 to 9 do // Поиск максимального и минимального № зачеток
withMZap[i] do// и номеров в массиве их обладателей
Begin
if MZap[i].nzach>max then
Begin
max:=nzach;
k:=i;
end;
if MZap[i].nzach<min then
Begin
min:=nzach;
l:=i;
end;
end;
Memo1.Lines.Add('РЕЗУЛЬТАТ'); // Занесение результатов в Memo поле
Memo1.Lines.Add(#13#10+'Наибольший № зачетки '+IntToStr(max)+' имеет '+MZap[k].fio);
Memo1.Lines.Add(#13#10+'Наименьший № зачетки '+IntToStr(min)+' имеет '+MZap[l].fio);
end;
End.