gpt4 book ai didi

c++ - 交换行矩阵 C++

转载 作者:行者123 更新时间:2023-11-28 01:28:11 24 4
gpt4 key购买 nike

你好我的程序有问题,我想用下一个结构交换矩阵中的行:

第一行和最后一行。

第二行和倒数第二行。

直到 N 到 N 个值。

注意:我使用了#define n 4,但我需要能够对任何 n 值执行此操作。

输入:

3 4 5 0
2 6 1 2
2 7 1 2
2 1 1 2

输出:

2 1 1 2
2 7 1 2
2 6 1 2
3 4 5 0

这个程序只改变第一行和最后一行:

#include <iostream>

using namespace std;

#define n 4

void interchange(int m[][n])
{
int rows = n;


for (int i = 0; i < n; i++)
{
int t = m[0][i];
m[0][i] = m[rows - 1][i];
m[rows - 1][i] = t;
}
}


int main()
{

int m[n][n] = {
{ 8, 9, 7, 6 },
{ 4, 7, 6, 5 },
{ 3, 2, 1, 8 },
{ 9, 9, 7, 7 }
};

interchange(m);


for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
cout << m[i][j] << " ";
cout << endl;
}
}

谢谢。

最佳答案

您需要从 0 开始按行循环至 n/2 (for (int i = 0; i < n/2; ++i))。每行中的元素再循环一次 ( for(int j = 0; j < n; j++) )

您必须交换索引为 i 的行中的每个元素行中每个元素的索引为 n-i-1 .

#include <iostream>
#define n 4

void interchange(int m[][n])
{
for (int i = 0; i < n/2; ++i)
{
for(int j = 0; j < n; j++)
{
std::swap(m[i][j], m[n-i-1][j]);
}
}
}

int main()
{
int m[n][n] = { { 8, 9, 7, 6 },
{ 4, 7, 6, 5 },
{ 3, 2, 1, 8 },
{ 9, 9, 7, 7 } };


interchange(m);

for (int i = 0; i < n; ++i)
{
for(int j = 0; j < n; j++)
{
std::cout << m[i][j] << " ";
}
std::cout << std::endl;
}
return 0;
}

关于c++ - 交换行矩阵 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52887303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com