Min*_*lai 4 c++ transpose matrix
我正在尝试编写一个程序来转置方阵的次对角线。我知道如何正常转置它(沿着它的正常对角线),但我无法弄清楚如何围绕次轴进行转置。
循环中有什么问题?我知道我必须运行它直到“N/2”并更改“i”和“j”的初始化,即使我这样做它也不起作用。
void transpose(int a[][N]) // Transposes matrix along the secondary diagonal
{
for (int i = 0; i < N; i++)
for (int j = 0; j < i; j++)
{
int tmp = a[i][j];
a[i][j] = a[N - 1 - j][N - 1 - i];
a[N - 1 - j][N - 1 - i] = tmp;
}
}
Run Code Online (Sandbox Code Playgroud)
所以,我花了很长时间才弄清楚循环。正确的代码应该访问方阵中的上三角元素,并将它们与下三角矩阵中的相应元素交换。次对角线保持不变。
这是经过测试的工作代码:
void swapEl(int mat[][n])
{
for (int i = 0; i < (n - 1); i++)
for (int j = 0; j < (n - 1) - i; j++)
{
int tmp = mat[i][j];
mat[i][j] = mat[(n - 1) - j][(n - 1) - i];
mat[(n - 1) - j][(n - 1) - i] = tmp;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8396 次 |
| 最近记录: |