Индекс за пределами диапазона.Формула числа перестановок с повторениями

    private void button6_Click(object sender, EventArgs e)
{
    int temp, n, k;
    n = int.Parse(textBox1.Text);
    k = int.Parse(textBox2.Text);

    int sum = 0;
        for (int i = 0; i < dataGridView1.RowCount; i++)
        {
            sum += Convert.ToInt32(dataGridView1[k, i].Value);
        }
        temp = sum;


    listBox1.Items.Add(Fact(temp)/ 2);

}

введите сюда описание изображения

Как реализовать формулу числа перестановок с повторениями.

Я пытался посчитать сумму с 1 го столбца, но ошибка введите сюда описание изображения


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

Автор решения: Andrei Khotko

ArgumentOutOfRangeException - название исключения говорит само за себя. Ваш аргумент (индекс i) выходит за допустимые пределы диапазона таблицы.

У вас в скриншоте условие выхода из цикла i < dataGridView1.RowCount + 1;. На последней итерации цикла у вас i = dataGridView1.RowCount, а индексация в массиве в c# начинается с 0. поэтому последний элемент массива строк будет иметь индекс i = dataGridView1.RowCount - 1. Поэтому условие выхода из цикла должно быть такое же, как у вас указано в коде вопроса, а именно:

for (int i = 0; i < dataGridView1.RowCount; i++)
{
    //...
}
→ Ссылка
Автор решения: Bohdan
        for (int i = 0; i < dataGridView1.RowCount; i++)
    {
        sum += Convert.ToInt32(dataGridView1[0, i].Value);
    }
    temp = sum;

индексация в массиве в c# начинается с 0. на скриншоте было так sum += Convert.ToInt32(dataGridView1[1, i].Value); Правильноsum += Convert.ToInt32(dataGridView1[0, i].Value);

→ Ссылка