如何使用c#计算矩阵行中的总数

时间:2017-10-23 09:20:31

标签: c#

那么如何计算矩阵a的第一行中的总数并将其放入矩阵b中。

示例:

矩阵a:3 2 1

并且矩阵b的输出将类似于:3 + 6 2 + 6 1 + 6

        Console.Write("Matriks A\n");
        Console.WriteLine("------------");
        Console.WriteLine();

        for (a = 0; a < baris; a++)
        {
            for (b = 0; b < kolom; b++)
            {
                Console.Write(" Matriks A [" + (a + 0) + "][" + (b + 0) + "] = ");
                matrik_a[a, b] = int.Parse(Console.ReadLine());
            }
        }

        Console.WriteLine();
        Console.WriteLine("Matriks B ");
        Console.WriteLine("----------------------------------");

        for (a = 0; a < baris; a++)
        {
            for (b = 0; b < kolom; b++)
            {

                matrik_b[a, b] = matrik_a[a, b] + matrik_b[a, b];
                Console.Write("{0:d}\t", matrik_b[a, b]);


            }
            Console.WriteLine();
        }
        Console.ReadLine();
    }
    }
}

2 个答案:

答案 0 :(得分:0)

你需要为每一行创建一个循环,将总数保存到var并放入另一个矩阵,所有这一切都在一次迭代中。

复杂性保持不变,因为2 * O(n)= O(n)

static void Main(string[] args)
    {
        int baris = 2, kolom = 2, a=0, b=0;
        Console.Write("Matriks A\n");
        Console.WriteLine("------------");
        Console.WriteLine();
        int[,] matrik_a = new int[3, 3];
        int[,] matrik_b = new int[3, 3];

        for (a = 0; a <= baris; a++)
        {
            for (b = 0; b <= kolom; b++)
            {
                Console.Write(" Matriks A [" + (a + 0) + "][" + (b + 0) + "] = ");
                matrik_a[a, b] = int.Parse(Console.ReadLine());
            }
        }

        Console.WriteLine();
        Console.WriteLine("Matriks B ");
        Console.WriteLine("----------------------------------");

        int sumOfRow = 0;
        for (a = 0; a <= baris; a++)
        {
            for (b = 0; b <= kolom; b++)
            {
                sumOfRow += matrik_a[a, b];
            }
            Console.WriteLine("sum of row " + a.ToString() + "is: " + sumOfRow.ToString());
            for (b = 0; b <= kolom; b++)
            {
                matrik_b[a, b] = matrik_a[a, b] + sumOfRow;
            }
            sumOfRow = 0;
        }

        for (a = 0; a <= baris; a++)
        {
            for (b = 0; b <= kolom; b++)
            {
                Console.Write(matrik_b[a, b]);
            }

        }
        Console.ReadLine();
    }

答案 1 :(得分:0)

我不确定这是否是最有效的解决方案,但将第二部分循环更改为以下内容应该有效:

for (a = 0; a < baris; a++)
{
    int rowSum = 0; //Below loop can be avoided using LINQ
    for (b = 0; b < kolom; b++)
    {
      rowSum += matrik_a[a, b];
    }
    for (b = 0; b < kolom; b++)
    {
        matrik_b[a, b] = matrik_a[a, b] + rowSum;
        Console.Write("{0:d}\t", matrik_b[a, b]);
    }
}