在矩阵 C++ 中交换 2 行
Swaping 2 rows in matrix c++
所以我有这个作业,打印一个 3 行 4 列的矩阵,到目前为止我设法以某种方式做到了(主要是通过阅读这个论坛),因为我们大学的教授不会解释这是怎么回事完成。所以切入正题。我的代码看起来像这样。我设法打印矩阵,然后我真的不知道这些东西是如何工作的,所以我尝试只移动临时矩阵中的第 1 行,然后将其移回。但这看起来确实不对,但我真的不知道还有什么其他方法可以做到这一点。我应该怎么办?
int matrix[3][4] = { { 1,2,3,3 },{ 4,5,6,2 },{ 7,8,9,3 } };
int temp[3][4];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++)
cout << " " << matrix[i][j];
cout << endl;
}
for (int i = 0; i < 3; i++) {
temp[1][4] = matrix[1][4];
matrix[3][4] = matrix[1][4];
matrix[1][4] = temp[1][4];
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++)
cout << " " << matrix[i][j];
cout << endl;
}
return 0;
}
如果你想交换第二行和第三行你可以这样做,记住数组的索引从 0 而不是 1 开始
for (int i = 0; i < 4; i++) {
temp = matrix[1][i];
matrix[1][i] = matrix[2][i];
matrix[2][i] = temp;
}
在 header <utility>
中声明了标准函数 std::swap
允许交换两个数组。否则你可以自己写一个合适的代码。
这是一个展示这两种方法的演示程序。
#include <iostream>
#include <utility>
int main()
{
const size_t M = 3;
const size_t N = 4;
int matrix[M][N] =
{
{ 1, 2, 3, 3 },
{ 4, 5, 6, 2 },
{ 7, 8, 9, 3 }
};
for ( const auto &row : matrix )
{
for ( int x : row ) std::cout << x << ' ';
std::cout << std::endl;
}
std::cout << std::endl;
std::swap( matrix[0], matrix[2] );
for ( const auto &row : matrix )
{
for ( int x : row ) std::cout << x << ' ';
std::cout << std::endl;
}
std::cout << std::endl;
for ( size_t i = 0; i < N; i++ )
{
int tmp = matrix[0][i];
matrix[0][i] = matrix[2][i];
matrix[2][i] = tmp;
}
for ( const auto &row : matrix )
{
for ( int x : row ) std::cout << x << ' ';
std::cout << std::endl;
}
}
它的输出是
1 2 3 3
4 5 6 2
7 8 9 3
7 8 9 3
4 5 6 2
1 2 3 3
1 2 3 3
4 5 6 2
7 8 9 3
所以我有这个作业,打印一个 3 行 4 列的矩阵,到目前为止我设法以某种方式做到了(主要是通过阅读这个论坛),因为我们大学的教授不会解释这是怎么回事完成。所以切入正题。我的代码看起来像这样。我设法打印矩阵,然后我真的不知道这些东西是如何工作的,所以我尝试只移动临时矩阵中的第 1 行,然后将其移回。但这看起来确实不对,但我真的不知道还有什么其他方法可以做到这一点。我应该怎么办?
int matrix[3][4] = { { 1,2,3,3 },{ 4,5,6,2 },{ 7,8,9,3 } };
int temp[3][4];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++)
cout << " " << matrix[i][j];
cout << endl;
}
for (int i = 0; i < 3; i++) {
temp[1][4] = matrix[1][4];
matrix[3][4] = matrix[1][4];
matrix[1][4] = temp[1][4];
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++)
cout << " " << matrix[i][j];
cout << endl;
}
return 0;
}
如果你想交换第二行和第三行你可以这样做,记住数组的索引从 0 而不是 1 开始
for (int i = 0; i < 4; i++) {
temp = matrix[1][i];
matrix[1][i] = matrix[2][i];
matrix[2][i] = temp;
}
在 header <utility>
中声明了标准函数 std::swap
允许交换两个数组。否则你可以自己写一个合适的代码。
这是一个展示这两种方法的演示程序。
#include <iostream>
#include <utility>
int main()
{
const size_t M = 3;
const size_t N = 4;
int matrix[M][N] =
{
{ 1, 2, 3, 3 },
{ 4, 5, 6, 2 },
{ 7, 8, 9, 3 }
};
for ( const auto &row : matrix )
{
for ( int x : row ) std::cout << x << ' ';
std::cout << std::endl;
}
std::cout << std::endl;
std::swap( matrix[0], matrix[2] );
for ( const auto &row : matrix )
{
for ( int x : row ) std::cout << x << ' ';
std::cout << std::endl;
}
std::cout << std::endl;
for ( size_t i = 0; i < N; i++ )
{
int tmp = matrix[0][i];
matrix[0][i] = matrix[2][i];
matrix[2][i] = tmp;
}
for ( const auto &row : matrix )
{
for ( int x : row ) std::cout << x << ' ';
std::cout << std::endl;
}
}
它的输出是
1 2 3 3
4 5 6 2
7 8 9 3
7 8 9 3
4 5 6 2
1 2 3 3
1 2 3 3
4 5 6 2
7 8 9 3