Программа, создающая массив из элементов, получаемых из действий над первой матрицей и выводящая элементы массива

Составить программу, которая в матрице D(m, n) находит все элементы, где сумма всех элементов строки, стоящих до рассматриваемого, больше суммы элементов столбца , стоящих до рассматриваемого. Сумму предшествующих элементов считать равной нулю, если элемент является первым в строке или столбце. Сформировать из найденных элементов массив. Вывести матрицу в виде матрицы, а под ней - элементы массива.(приложение Windows Forms)

Матрицу создать получается. А вот создать массив из элементов, получаемых по заданному правилу не получается, как и вывести элементы.

Мучаюсь уже неделю с этой задачей.

namespace WindowsFormsApp3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int M = 0;
        int N = 0;
        int[,] Numbers;
        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e) // создание матрицы
        {
            dataGridView1.Columns.Clear();
            dataGridView1.Rows.Clear();


            dataGridView1.AllowUserToAddRows = true;

            M = int.Parse(M_input.Text);
            N = int.Parse(N_input.Text);

            Numbers = new int[0, 0];
            Numbers = new int[N, M];

            for (int i = 0; i < M; i++)
            {
                dataGridView1.Columns.Add("", "");
            }

            for (int i = 0; i < N; i++)
            {
                dataGridView1.Rows.Add("", "");
            }

            dataGridView1.AllowUserToAddRows = false;
        }
        //должна создавать вторую и выводить элементы массива( как я понял в виде строки)
        private void button2_Click(object sender, EventArgs e)
        {
            int n = dataGridView1.RowCount;
            int m = dataGridView1.ColumnCount;
            double[,] mas = new double[n, m];

            for (int i = 0; i < n; i++)
                for (int j = 0; j < m; j++)
                {
                    mas[i, j] = double.Parse(dataGridView1.Rows[i].Cells[j].Value.ToString());

                }
            int raz = 0;
            dataGridView2.RowCount = 1;
            dataGridView2.ColumnCount = 0;

            for (int i = 0; i <= n; i++)
                for (int j = 0; j <= m; j++)

                {
                    double sum1 = 0;
                    double sum2 = 0;

                    if (i == 0)
                        sum1 = 0;
                    else
                        for (int k = 0; k < i; k++)
                            sum1 += mas[i, k];

                    if (j == 0)
                        sum2 = 0;
                    else
                        for (int k = 0; k < j; k++)
                            sum2 += mas[k, j];


                    if (sum1 > sum2)
                    {

                        dataGridView2.ColumnCount++;
                        dataGridView2.Rows[0].Cells[raz].Value = mas[i, j];
                        raz++;
                    }
                }
        }
        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void LUM1_Click(object sender, EventArgs e)
        {

        }

        private void LUM2_Click(object sender, EventArgs e)
        {

        }

        private void LUM3_Click(object sender, EventArgs e)
        {

        }

        private void Matrix_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void M_input_TextChanged(object sender, EventArgs e)
        {

        }

        private void N_input_TextChanged(object sender, EventArgs e)
        {

        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void Matrix2_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void label3_Click(object sender, EventArgs e)
        {

        }
    }
}

Ответы (1 шт):

Автор решения: cbr ngst

Спасибо, все же смог дописать до рабочего состояния.

namespace Matrica
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        int m; // Столбцы
        int n; // Строки
 
        int[,] MatrixArray; // Выделение памяти для массива
 
        private void Create_Click(object sender, EventArgs e)// По нажатия создается сетка матрицы
        {
            GridMatrix.AllowUserToAddRows = true;// Запрещает добавление строк
 
            m = int.Parse(Size_M.Text); // Ввод кол-ва столбцов 
            n = int.Parse(Size_N.Text); // Ввод кол-ва строк
 
            _Answer.Text = "Элементы: "; // Создается строку с словом "Элементы: "
 
            GridMatrix.Columns.Clear();
            GridMatrix.Rows.Clear();
 
            MatrixArray = new int[n, m]; // Создание пустого массива размерность n на m
 
 
            for (int i = 0; i < m; i++)// Создание столбцов
            {
                GridMatrix.Columns.Add("", "");
            }
            for (int i = 0; i < n; i++)// Создание строк
            {
                GridMatrix.Rows.Add("", "");
            }
 
            GridMatrix.AllowUserToAddRows = false;
        }
 
        private void Answer_Click(object sender, EventArgs e)// По нажатию выдается ответ
        {
         
            for(int i = 0; i < n; i++)// Перенос матрицы в массив
            {
                for(int j = 0; j < m; j++)
                {
                    MatrixArray[i, j] = int.Parse(GridMatrix[j, i].Value.ToString());
                }
            }
 
            int[] AnswerArray=new int[m*n];
            int Counter=0;
 
            for (int i = 0; i < n; i++) // Сам алгоритм нахождения элементов
            {
                for (int j = 0; j < m; j++)
                {
                    int RowSumm = 0,ColumnSumm=0; // Сумма элементов строки и столбца
 
                    for (int b=0;b<j;b++)// Сумма строк
                    {
                        RowSumm += MatrixArray[i, b];
                    }
                    for(int b = 0; b < i; b++)// Сумма столбов
                    {
                        ColumnSumm += MatrixArray[b, j];
                    }
 
                    if (RowSumm>ColumnSumm)
                    {
                        AnswerArray[Counter] = MatrixArray[i, j];
                        Counter++;
                    }
                }
            }
 
            _Answer.Text = "Элементы: ";
 
            for (int i=0;i<Counter;i++)//Вывод элементов массива по очереди
            {
                _Answer.Text += ""+AnswerArray[i];
 
                if (i!=Counter-1)
                {
                    _Answer.Text += ", ";
                }
            }
 
        }
 
        private void M_Label_Click(object sender, EventArgs e)
        {
 
        }
        private void N_Label_Click(object sender, EventArgs e)
        {
 
        }
 
        private void Answ1_Click(object sender, EventArgs e)
        {
 
        }
 
        private void GridMatrix_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
 
        }
 
        private void SizeLabel_Click(object sender, EventArgs e)
        {
 
        }
 
        private void Size_M_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        private void Size_N_TextChanged(object sender, EventArgs e)
        {
 
        }
    }
}
→ Ссылка