Сумма отрицательных элементов на главной диагонали

Ошибку не показывает, но считает неправильно.

Random rnd = new Random();
    private void button1_Click(object sender, EventArgs e)
    {
        dataGridView1.RowCount = 3;
        dataGridView1.ColumnCount = 3;
        int i, j;
        int[,] mas = new int[3, 3];
        double rez=0;
        for (i = 0; i < mas.GetLength(0); ++i) {

            for (j = 0; j < mas.GetLength(1); ++j)
            {
                mas[i, j] = rnd.Next(-5, 5);
                if (mas[i, i] < 0)
                {
                    rez = rez + mas[i, i];
                    label1.Text = $"{rez}";
                }
                dataGridView1[j, i].Value = mas[i, j].ToString();
            }
    }

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

Автор решения: CrazyElf

Диагональ надо учитывать после того, как вы заполнили всю строку и делать это один раз, а не внутри второго цикла.

Random rnd = new Random();
private void button1_Click(object sender, EventArgs e)
{
    dataGridView1.RowCount = 3;
    dataGridView1.ColumnCount = 3;
    int i, j;
    int[,] mas = new int[3, 3];
    double rez=0;
    for (i = 0; i < mas.GetLength(0); ++i) 
    {
        for (j = 0; j < mas.GetLength(1); ++j)
        {
            mas[i, j] = rnd.Next(-5, 5);
            dataGridView1[j, i].Value = mas[i, j].ToString();
        }
        if (mas[i, i] < 0)
        {
            rez = rez + mas[i, i];
        }
    }
    label1.Text = $"{rez}";
}
→ Ссылка
Автор решения: Qwertiy
if (mas[i, i] < 0)

Чтобы считать в том месте, где то написано, надо исправить на

if (i == j && mas[i, i] < 0)

Но лучше вынести либо в отдельный цикл, либо во внешний, как это сделано в соседнем ответе.

→ Ссылка