я даю неверный результат в 2d массивах - PullRequest
0 голосов
/ 26 ноября 2018

привет, я делаю калькулятор определителя в форме c-sharp windows, но у меня проблема с результатом суммирования.Алгоритм: sum = (row11 ((row22 * row33) - (row23 * row32))) - (row12 ((row21 * row33) - (row23 - row31))) + (row13 ((row21 * row32) - (row22 - row31)));

например, это матрица: | 1,2,3 || 2,3,4 || 5.6.7 |результат должен быть 0, но в моем коде я даю 25

public void cal()
    {
        int[,] a = new int[3, 3];

        int row11;
        int row12;
        int row13;

        int row21;
        int row22;
        int row23;

        int row31;
        int row32;
        int row33;

        row11 = Convert.ToInt32(textBox1.Text);
        row12 = Convert.ToInt32(textBox2.Text);
        row13 = Convert.ToInt32(textBox3.Text);

        row21 = Convert.ToInt32(textBox4.Text);
        row22 = Convert.ToInt32(textBox5.Text);
        row23 = Convert.ToInt32(textBox6.Text);

        row31 = Convert.ToInt32(textBox7.Text);
        row32 = Convert.ToInt32(textBox8.Text);
        row33 = Convert.ToInt32(textBox9.Text);


        a[0, 0] = row11;
        a[0, 1] = row12;
        a[0, 2] = row13;

        a[1, 0] = row21;
        a[1, 1] = row22;
        a[1, 2] = row23;

        a[2, 0] = row31;
        a[2, 1] = row32;
        a[2, 2] = row33;

        int sum = (row11 * ((row22 * row33) - (row23 * row32))) - (row12 * ((row21 * row33) - (row23 - row31))) + (row13 * ((row21 * row32) - (row22 - row31)));

        textBox19.Text = sum.ToString();

1 Ответ

0 голосов
/ 26 ноября 2018

путем разложения исчисления детерминанты у меня есть 0 с вашей выборкой:

        var determinant = a[0, 0] * (a[1, 1] * a[2, 2] - a[2, 1] * a[1, 2]) -
                          a[0, 1] * (a[1, 0] * a[2, 2] - a[2, 0] * a[1, 2]) +
                          a[0, 2] * (a[1, 0] * a[2, 1] - a[2, 0] * a[1, 1]);
...