2
28111989
пишу програмку перевод из матрицы смежности в матрицу изоморфности и наоборот. Столкнулся с такой проблемой: при введении 3его динамического массива начинаются проблемы со вторым (он 6*2) он становится одномерным (не могу получить доступ ко второй колонке), может и с первым тоже проблемы были бы не пробовал, при не использовании 3его всё работает нормально.Никак не могу понять в чём проблема
C++:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i,j,**inp;
inp=new int*[SpinEdit1->Value];
for (i=0;i<SpinEdit1->Value;i++)
inp[i]=new int[SpinEdit1->Value];
int reb=0;
for (i=0;i<SpinEdit1->Value;i++)
for (j=0;j<SpinEdit1->Value;j++)
if (StringGrid1->Cells[j][i]!="1") StringGrid1->Cells[j][i]=IntToStr(0);
for (i=0;i<SpinEdit1->Value;i++)
for (j=0;j<SpinEdit1->Value;j++)
{
inp[i][j]=StrToInt(StringGrid1->Cells[j][i]);
if (inp[i][j]==1) reb++;
}
int tmp=0,l2=0;
for (j=0;j<SpinEdit1->Value;j++)
{
for (i=0;i<SpinEdit1->Value;i++)
if (inp[i][j]==1) tmp++;
if (l2<tmp) l2=tmp;
tmp=0;
}
int **mas2;
mas2=new int*[SpinEdit1->Value];
for (i=0;i<SpinEdit1->Value;i++)
mas2[i]=new int[l2];
int kn=0;
tmp=0;
for (i=0;i<SpinEdit1->Value;i++)
{
for (j=0;j<SpinEdit1->Value;j++)
if (inp[i][j]==1)
{
mas2[i][tmp]=j+1;
tmp++;
}
if (tmp>kn) kn=tmp;
tmp=0;
}
tmp=0;
int *mas3=new int[reb];
for (j=0;j<kn;j++)
for (i=0;i<SpinEdit1->Value;i++)
if (mas2[i][j]!=NULL)
{
mas3[tmp]=mas2[i][j]*10+tmp+1;
tmp++;
}
ShowMessage(IntToStr(mas3[0]));
ShowMessage(IntToStr(mas3[1]));
ShowMessage(IntToStr(mas3[2]));
ShowMessage(IntToStr(mas3[3]));
ShowMessage(IntToStr(mas3[4]));
ShowMessage(IntToStr(mas3[5]));
ShowMessage(IntToStr(mas3[6]));
//-----------
for (i=0;i<SpinEdit1->Value;i++)
delete inp[i];
delete [] inp;
for (i=0;i<l2;i++)
delete mas2[i];
delete [] mas2;
delete [] mas3;