Если я правильно понял задание то так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
Var
i,j: Integer;
Pr, SumKi, Sum, D: Real;
begin
Sum:= 0; SumKi:= 0;
For i:= 0 To StringGrid1.ColCount - 1 Do
begin
Pr:= 1;
For j:= 0 To StringGrid1.RowCount - 1 Do Pr:= Pr*StrToFloat(StringGrid1.Cells[i,j]);
SumKi:= SumKi + Pr;
Sum:= Sum + StrToFloat(StringGrid1.Cells[i,StringGrid1.RowCount-1]);
end;
D:= SumKi/Sum;
end;
Тут без разницы сколько строк, столбцов. (Sum - сумма последней строки. Правильно?)