c# - 转置非方阵 C#

标签 c# matrix multidimensional-array

我可以转置一个方阵,但现在我想用用户输入转置一个非方阵(在我的代码中为 3*2)。

其他消息来源建议我先创建一个新矩阵,我已经这样做了。我设法制作了矩阵,但是在转置时,它从第 4 个值停止。

我已经查看了其他主题,但找不到错误。到目前为止,这是我的代码,有人可以告诉我哪里出错了吗?

谢谢!

        //const
        const int ROWS = 3;
        const int COLS = 2;

        //first matrix
        int[,] matrix1 = new int[ROWS, COLS];
        for (int i = 0; i < ROWS; i++)
        {
            for (int j = 0; j < COLS; j++)
            {
                Console.Write("Enter num: ");
                matrix1[i, j] = int.Parse(Console.ReadLine());
            }
        }

        //output
        Console.WriteLine("Eerste matrix: ");
        for (int i = 0; i < ROWS; i++)
        {
            for (int j = 0; j < COLS; j++)
            {
                Console.Write(matrix1[i, j] + " ");
            }
            Console.WriteLine(" ");
        }

        //transposed matrix
        Console.WriteLine("Tweede matrix: ");
        int[,] matrix2 = new int[COLS, ROWS];
        for (int i = 0; i < ROWS; i++)
        {
            for (int j = 0; j < COLS; j++)
            {
                matrix2[j, i] = matrix1[j, i];
                Console.Write(matrix2[j, i] + " ");
            }
            Console.WriteLine(" ");
        }

这是我在运行程序时得到的结果:

        //output
        Enter num: 1
        Enter num: 2
        Enter num: 3
        Enter num: 4
        Enter num: 5
        Enter num: 6
        first matrix: 
        1 2  
        3 4  
        5 6  
        transposed matrix: 
        1 3  
        2 4  

        //--->> Only went up to 4th value? 

最佳答案

所以,一开始你加载一个矩阵,其中包含以下字段:“i,j”=>“行,列”

在最后一步,您尝试使用“j,i”=>“列、行”顺序访问矩阵。

你正在反转 i,j 索引。-

让我通过更改变量名称来帮助您:

//常量

    const int ROWS = 3;
    const int COLS = 2;

    //first matrix
    int[,] matrix1 = new int[ROWS, COLS];
    for (int row = 0; row < ROWS; row++)
    {
        for (int column = 0; column < COLS; column ++)
        {
            Console.Write("Enter num: ");
            matrix1[row, column] = int.Parse(Console.ReadLine());
        }
    }

//输出

    Console.WriteLine("Eerste matrix: ");
    for (int row = 0; row < ROWS; row++)
    {
        for (int column = 0; column < COLS; column++)
        {`enter code here`
            Console.Write(matrix1[row, column] + " ");
        }
        Console.WriteLine(" ");
    }

//转置矩阵

    Console.WriteLine("Tweede matrix: ");
    int[,] matrix2 = new int[COLS, ROWS];
    for (int row = 0; row < ROWS; row++)
    {
        for (int column = 0; column < COLS; column++)
        {
            matrix2[column, row] = matrix1[row, column];
            Console.Write(matrix2[column, row] + " ");
        }
        Console.WriteLine(" ");
    }

//编辑:实际上注意到样本没有正确转置它。修复。

关于c# - 转置非方阵 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48302244/

相关文章:

c# - 如何检查只有信用卡号码有效而不是借记卡..?

C#:如何初始化具有列表的记录?

android - 图像位置无法使用刻度类型矩阵设置中心

python - 在 Python 中查找重复矩阵?

c# - OpenXML 方案颜色转换 - 应用 <a :gamma> and <a:invgamma>

c# - 如何在运行时更改语义日志记录中的日志级别?

c# - 如何在C#中乘以矩阵?

c - 如何在c中返回指向可变大小的二维数组的指针

java - 将字符串转为多维数组

c# - 多维列表 C#