Сумма отрицательных элементов на главной диагонали
Ошибку не показывает, но считает неправильно.
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)
Но лучше вынести либо в отдельный цикл, либо во внешний, как это сделано в соседнем ответе.