InocentDevil 2016-06-27 03:49 采纳率: 0%
浏览 1579
已结题

矩阵转置:求解释为什么矩阵转置不成功,还是原来的矩阵

#include
using namespace std;
const int row = 2;
const int column = 2;
void PrintMatrix(int m[][column]);
void ReverseMatrix(int matrix[][column]);

void main()
{

cout<<"请输入"<<(row * column)<<"个数字"<<endl;
int matrix[row][column];
for(int i = 0; i < row; ++i)
{
    for(int j = 0; j < column; ++j)
    {
        cin>>matrix[i][j];
    }       
}
PrintMatrix(matrix);
ReverseMatrix(matrix);
cout<<"转置后:"<<endl;
PrintMatrix(matrix);

}

void PrintMatrix(int matrix[][column])
{
for(int i = 0; i < row; i++)
{
for(int j = 0; j < column; j++)
{
cout<<matrix[i][j]<<" ";
}
cout<<endl<<endl<<endl;
}
}

void ReverseMatrix(int matrix[][column])
{
for(int i = 0; i < row; i++)
{
for(int j = 0; j < column; j++)
{
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}

//求解释为什么矩阵转置不成功,还是原来的矩阵

  • 写回答

1条回答 默认 最新

  • 小灸舞 2016-06-27 03:54
    关注

    for(int j = 0; j < column; j++)应该改成for(int j = 0; j < i; j++)
    不然相当于你每个位置都交换了两次,等于没有交换

     #include <iostream>
    using namespace std;
    const int row = 2;
    const int column = 2;
    void PrintMatrix(int m[][column]);
    void ReverseMatrix(int matrix[][column]);
    
    void main()
    {
    
    
        cout << "请输入" << (row * column) << "个数字" << endl;
        int matrix[row][column];
        for (int i = 0; i < row; ++i)
        {
            for (int j = 0; j < column; ++j)
            {
                cin >> matrix[i][j];
            }
        }
        PrintMatrix(matrix);
        ReverseMatrix(matrix);
        cout << "转置后:" << endl;
        PrintMatrix(matrix);
    }
    
    void PrintMatrix(int matrix[][column])
    {
        for (int i = 0; i < row; i++)
        {
            for (int j = 0; j < column; j++)
            {
                cout << matrix[i][j] << "  ";
            }
            cout << endl << endl << endl;
        }
    }
    
    void ReverseMatrix(int matrix[][column])
    {
        for (int i = 0; i < row; i++)
        {
            for (int j = 0; j < i; j++)
            {
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?