交换函数不是在 C++ 中交换 2D 数组的元素
Swap Function is not swapping elements of 2D array in c++
所以这个转置函数应该交换 2d 数组的元素,但它没有交换它。
程序的输出与其输入相同。
input:
1 2 3 4 5 6 7 8 9
output:
123456789
我什至尝试用我的交换代码替换交换函数,其中您使用 temp 变量来交换两个元素,这也不起作用,所以我不知道发生了什么。
void transpose(int input_arr[][3], int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
swap(input_arr[i][j], input_arr[j][i]);
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << input_arr[i][j];
}
}
}
int main()
{
const int n = 3;
int row = 3;
int col = 3;
int input_arr[n][n];
arr(input_arr, n);
transpose(input_arr, n);
}
你进行了太多的交换:)
例如,当i
等于0
并且j
等于1
交换时
input_arr[0][1] and input_arr[1][0]
当i
等于1
而j
等于0
时,您再次交换
input_arr[1][0] and input_arr[0][1]
仅以相反的顺序。
我可以建议以下解决方案
#include <iostream>
#include <utility>
template <typename T, size_t N>
void transpose( T ( &a )[N][N] )
{
for ( size_t i = 0; i < N; i++ )
{
for ( size_t j = i + 1; j < N; j++ )
{
std::swap( a[i][j], a[j][i] );
}
}
}
template <typename T, size_t N>
std::ostream & display( const T ( &a )[N][N],std::ostream &os = std::cout )
{
for ( size_t i = 0; i < N; i++ )
{
for ( size_t j = 0; j < N; j++ )
{
os << a[i][j] << ' ';
}
os << 'n';
}
return os;
}
int main()
{
const size_t N1 = 3;
int a1[N1][N1] =
{
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
};
display( a1 ) << 'n';
transpose( a1 );
display( a1 ) << 'n';
const size_t N2 = 4;
char a2[N2][N2] =
{
{ 'A', 'B', 'C', 'D' },
{ 'E', 'F', 'G', 'H' },
{ 'I', 'J', 'K', 'L' },
{ 'M', 'N', 'O', 'P' }
};
display( a2 ) << 'n';
transpose( a2 );
display( a2 ) << 'n';
return 0;
}
程序输出为
1 2 3
4 5 6
7 8 9
1 4 7
2 5 8
3 6 9
A B C D
E F G H
I J K L
M N O P
A E I M
B F J N
C G K O
D H L P
相关文章:
- 2D数组来自文本输入,中间有空格
- 将值指定给向量(2D)的向量中的某个位置
- 如何使用用户输入在C++中正确填充2D数组
- 如何在C++中检查2D数组中负值的输入验证
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- C++嵌套if语句,基本货币交换
- 在 2D 向量中使用第三个 [ ] 有什么意义?
- shell排序中的交换和比较
- 四边形的 2D 旋转
- 交换函数不是在 C++ 中交换 2D 数组的元素
- 如何将元素的索引从2D数组存储到1D数组中,然后交换这些值
- 在C++中使用 2D 数组进行交换
- 用反向对角线交换2D阵列最小行值
- 在2D数组中交换行的最佳方法
- 如何在 2D 数组 c++ 中交换元素
- 如何使用某些MPI命令(或组合命令)之间在两个处理器之间交换2D数组中存储的数据
- 为什么交换2d数组指针不起作用
- C++查找最小位置,在 2D 数组中进行排序和交换
- 在c++中,在O(1)时间内交换2d数组的行或列
- 如何交换2D阵列的最大和最小成员索引