首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >交换行矩阵C++

交换行矩阵C++
EN

Stack Overflow用户
提问于 2018-10-19 07:02:39
回答 2查看 7.5K关注 0票数 0

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

第一排和最后一排。

第二排和第二排。

直到N到N值。

注意:我使用了#define n 4,但是我需要对n的任何值都能这样做。

输入:

代码语言:javascript
复制
3 4 5 0
2 6 1 2
2 7 1 2
2 1 1 2

输出:

代码语言:javascript
复制
2 1 1 2
2 7 1 2
2 6 1 2
3 4 5 0

此程序只更改第一行和最后一行:

代码语言:javascript
复制
#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;
    }
}

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-19 07:16:32

您需要一个从0n/2 (for (int i = 0; i < n/2; ++i))的逐行循环。以及每一行中的元素再循环一次(for(int j = 0; j < n; j++))

您必须用索引i与行中的每个元素与索引n-i-1交换行中的每个元素。

代码语言:javascript
复制
#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;
}
票数 1
EN

Stack Overflow用户

发布于 2018-10-19 07:13:11

您需要使用其他循环来遍历从第一行到最后一行的行,如下所示:

代码语言:javascript
复制
void interchange(int m[][n]) 
{ 
    int lastRow = n - 1; 

    for (int j = 0; j <= lastRow / 2; j++ ) {
        for (int i = 0; i < n; i++) 
        { 
            int t = m[j][i]; 
            m[j][i] = m[lastRow - j][i]; 
            m[lastRow - j][i] = t; 
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52887303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档