Создадим программу, которая может быть использована при подсчете общего количества медалей, заработанных спортсменами каждой страны и соответствующего количества баллов, которые вычисляются по следующему правилу: за каждую золотую медаль команда получает семь очков, за серебряную – шесть очков, за бронзовую – пять очков. После подсчетов программа автоматически сортирует страны в соответствии с количеством набранных баллов.
Для ввода исходных данных и отображения результата используем компонент StringGrid (Sg), состоящий из 14 строк и 6 колонок. Ячейки первой зафиксированной строки используются в качестве заголовков колонок таблицы. Первая колонка заполняется программно, назначением события OnActivate на форму и присваиванием ячейкам названий стран, например Sg.cells[0,1]:=’Австралия’.
Программа обработки исходной таблицы запускается щелчком мыши на кнопке «Итоги».
procedure TForm1.BitBtn1Click(Sender: TObject);
Var
i,j,ball,s,max, row, col:integer;
buf:array [0..5] of string;
Begin
{Подсчет количества медалей и баллов, причем, если ячейка пуста, то автоматически в нее заносится ноль}
for i:=1 to sg.rowcount do
begin
s:=0;
for j:=1 to 3 do
If sg.cells[j,i]<>'' then
s:=s+StrToInt(sg.cells[j,i])
else
sg.Cells[j,i]:='0';
sg.cells[4,i]:=IntToStr(s);
ball:=7*StrToInt(sg.cells[1,i])+
6*StrToInt(sg.cells[2,i])+
5*StrToInt(sg.cells[3,i]);
sg.cells[5,i]:=IntToStr(ball);
end;
{Сортировка}
for row:=1 to sg.rowcount-1 do
begin
max:=row;
for i:=row to sg.rowcount-1 do
if strtoint(sg.cells[5,i])>strtoint(sg.cells[5,max]) then