Можете ли вы просто сказать мне, что не так с моей логикой в приведенном ниже коде? Я пытаюсь сделать транспонирование матрицы, но вывод идет дико неправильно. Например, я запускаю матрицу в своей основной функции:
int a[2][2];
a[0][0]=1;
a[0][1]=2;
a[1][0]=3;
a[1][1]=4;
int *a1;
a1=&a[0][0];
и затем
transpose(a1,2,2);
Вывод дает: [16 , 16]
, [3 , 16]
. Но результат должен был быть [1 , 3]
, [2 , 4]
.
int* transpose(int *a,int m,int n)
{
int i,j;
int tmp;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
*(a + i*m + j) = tmp;
*(a + i*m + j) = *(a + i + j*m);
*(a + i + j*m) = tmp;
}
}
return a;
}