转换矩阵失败

  • 本文关键字:失败 转换 c++ matrix
  • 更新时间 :
  • 英文 :


我试图转置矩阵,但在某个时刻失败了。我找不到我犯错误的地方。首先,我创建一个矩阵作为锯齿状数组。我初始化它。交换每个项目,但它保持不变。transpoz功能部分改变了元件,但在操作结束时,它保持不变

#include<iostream> 
#include<iomanip>
#include<string> 
#include<limits> 
#include<vector>
using namespace std;  
void init_matrix(int** source)
{
int count = 1;
for (int i = 0; i < 5; ++i)
{
for (int j = 0; j < 5; ++j)
{
source[i][j]=count; count++;
}
}
}
void matrix_transpoz(int** source)
{
int temp; 
for (int i = 0; i < 5; ++i)
{
for (int j = 0; j < 5; ++j)
{
temp = source[i][j];
source[i][j] = source[j][i];
source[j][i] = temp;
cout << source[i][j] << "t";
}cout << endl;
}cout << endl;
}
void print_matrix(int** source)
{
for (int i = 0; i < 5; ++i)
{
for (int j = 0; j < 5; ++j)
{
cout << source[i][j] << "t";
}cout << endl;
} 
}
int main(int argc, char* argv[]) 
{
int** arr; 
int count = 1;
arr = new int* [5]; 
for (int i = 0; i < 5; ++i)
{
arr[i] = new int[5];
}
init_matrix(arr); 
print_matrix(arr); cout << endl; 
matrix_transpoz(arr); 
print_matrix(arr); cout << endl;

return 0;
}

如果将同一对数据交换两次,则在最后得到初始矩阵。只需使用

for (int j = i+1; j < 5; ++j)` 

以避免交换两次相同的数据。

输出:

1   2   3   4   5   
6   7   8   9   10  
11  12  13  14  15  
16  17  18  19  20  
21  22  23  24  25  
1   6   11  16  21  
2   7   12  17  22  
3   8   13  18  23  
4   9   14  19  24  
5   10  15  20  25

代码:

#include<iostream> 
#include<iomanip>
#include<string> 
#include<limits> 
#include<vector>
using namespace std;  
void init_matrix(int** source)
{
int count = 1;
for (int i = 0; i < 5; ++i)
{
for (int j = 0; j < 5; ++j)
{
source[i][j]=count; count++;
}
}
}
void matrix_transpoz(int** source)
{
int temp; 
for (int i = 0; i < 5; ++i)
{
for (int j = i+1; j < 5; ++j)
{
temp = source[i][j];
source[i][j] = source[j][i];
source[j][i] = temp;
}
}
}
void print_matrix(int** source)
{
for (int i = 0; i < 5; ++i)
{
for (int j = 0; j < 5; ++j)
{
cout << source[i][j] << "t";
}
cout << endl;
} 
}
int main(int argc, char* argv[]) 
{
int** arr; 
int count = 1;
arr = new int* [5]; 
for (int i = 0; i < 5; ++i)
{
arr[i] = new int[5];
}
init_matrix(arr); 
print_matrix(arr); 
cout << endl; 
matrix_transpoz(arr); 
print_matrix(arr); 
cout << endl;

return 0;
}```

相关内容

最新更新