@weenie

Нужна помощь с решением задачи. Необходимо посчитать смену знаков. В чем моя ошибка?

private void button7_Click(object sender, EventArgs e)
        {
            int s = 0;
            dataGridView1.RowCount = 3;
            dataGridView1.ColumnCount = 5;
            Random r = new Random();
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 5; j++)
                {
                    dataGridView1.Rows[i].Cells[j].Value = r.Next(-50, 50);
                }
            }
            int[,] array = new int[3,5];
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 5; j++)
                {
                    array[i,j] = (int)dataGridView1.Rows[i].Cells[j].Value;
                   if (array[i,j] < 0 && array[i++,j++] >= 0 || array[i,j] >= 0 && array[i++,j++] < 0) //Пишет — «Индекс находится вне границ массива»
                    {
                        s++;
                    }
                    label23.Text = Convert.ToString(s);
                }
            }
        }
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ответы на вопрос 1
ayazer
@ayazer
Sr. Software Engineer
ну так запустите дебаггер и посмотрите. тут больше чем 1 ошибка.

1) можете начать проверять с варианта когда i==2 и j==4. тогда array[i++,j++] уже выходит за границу
2) array[i++,j++] - вы уверены что вам нужно сравнивать значения именно по диагонали?
3) i++ это постинкремент который изменяет значение. подозреваю что вы хотели просто сравнить со следующим
4)
array[i,j] < 0 && array[i++,j++] >= 0 || array[i,j] >= 0 && array[i++,j++] < 0
запустите в дебаггере/интерактивной консоли и проверьте действительно ли это будет работать как вы думали. подозреваю что вы хотели получить все-же другой результат
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы