procedure Method_opt_vstavki(lenght,height:integer; dir_srok, shtraf:massive; matrica_pi:matrica);
var
index_massive,dop_mass,c,t,summ_pi_str,summ_shtraf,s: massive;
znach,nomer,y,k,h,parametr,cc,summ_str: integer;
index_matr: matrica;
begin
SetLength(index_massive, lenght);
SetLength(s, lenght);
SetLength(dop_mass, lenght);
SetLength(summ_pi_str, lenght);
SetLength(c, lenght);
SetLength(t, lenght);
SetLength(summ_shtraf, lenght);
for i:=0 to lenght-1 do
begin
index_massive:=0;
s:=0;
c:=0;
t:=0;
dop_mass:=0;
summ_pi_str:=0;
summ_shtraf:=0;
end;
SetLength(index_matr, lenght);
for i:=0 to lenght-1 do SetLength(index_matr, lenght);
for j:=0 to lenght-1 do
for i:=0 to lenght-1 do
index_matr[i,j]:=0;
for i:=0 to lenght-1 do index_massive:=i+1;
SetLength(summ_pi_str, lenght);
for i:=0 to lenght-1 do
begin
summ_str:=0;
for j:=0 to height-1 do summ_str:=summ_str+matrica_pi[i,j];
summ_pi_str:=summ_str;
end;
nomer:=1;
while nomer<=(n-1) do
begin
parametr:=index_massive[nomer];
//вставка последнего элемента массива во всевозможные позиции в массиве
for i:=0 to nomer do
begin
for y := 0 to i-1 do dop_mass[y]:=index_massive[y];
dop_mass:=parametr;
for y := i+1 to nomer do dop_mass[y]:=index_massive[y-1];
for j:=0 to nomer do index_matr[i,j]:=dop_mass[j];
//подсчет суммарного штрафа для полученной последовательности
//обнуляем массивы чисел
for j:=0 to nomer do
begin
c[j]:=0; t[j]:=0;
end;
//считаем сi
cc:=0;
for j:=0 to nomer do
begin
k:=dop_mass[j];
c[k]:=cc+summ_pi_str[k];
cc:=c[k];
end;
//выбор значений штрафа
for j:=0 to nomer do
begin
k:=c[j]-dir_srok[j];
if (0 < k) then t[j]:=k;
end;
end;
nomer:=nomer+1;
end;
Form1.StringGrid2.ColCount:=n+1;
for j:=1 to n do
for i:=1 to n do
Form1.StringGrid2.Cells[j,i]:=inttostr(index_matr[i-1,j-1]);
end;
Помогите исправить ошибку EinvalidPointer
Что самое непонятное это то, что он полностью проходит код и только в конце не выводит матрицу. Не понимаю.
Посмотрите пожалуйста.
Код:
для поиска подобных ошибок используйте отладчик. Его как бы для этого и сделали.