Очень глубоко не вникал в суть программы, но вот несколько моментов.
1.
Код:
for tmp:=0 to n-1 do
for j:=0 to m-1 do
stringgrid1.Cells[j,tmp]:=FormatFloat('0.00',C[tmp,j]);
end;
Вот в этом месте как раз надо использовать счетчик integer - он же t.
Код:
for t:=0 to n-1 do
for j:=0 to m-1 do
stringgrid1.Cells[j,t]:=FormatFloat('0.00',C[t,j]);
end;
2. Вы используете динамические массивы, поэтому на button5 надо обязательно нажимать прежде чем нажать на button4. Иначе выскочит ошибка как раз на той строке, что вы и говорили.
3. Ну также, это так на всякий случай, число столбцов должно быть не меньше 10. Или опять ошибка выскочит. Ну это вы наверное знаете.
4. В процедуре создания формы
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
edit1.Text:=inttostr(n);
edit5.Text:=inttostr(m);
edit6.Text:=inttostr(l);
edit4.text:=inttostr(k);
stringgrid1.RowCount:=n;
stringgrid1.ColCount:=m;
end;
Присваиваются едитам значения переменных, которые еще не определены.
5. Небольшой совет. Код читается очень трудно. Лучше пробелами выравнивать.