Индекс за пределами диапазона.Формула числа перестановок с повторениями
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 шт):
ArgumentOutOfRangeException - название исключения говорит само за себя. Ваш аргумент (индекс i) выходит за допустимые пределы диапазона таблицы.
У вас в скриншоте условие выхода из цикла i < dataGridView1.RowCount + 1;. На последней итерации цикла у вас i = dataGridView1.RowCount, а индексация в массиве в c# начинается с 0. поэтому последний элемент массива строк будет иметь индекс i = dataGridView1.RowCount - 1. Поэтому условие выхода из цикла должно быть такое же, как у вас указано в коде вопроса, а именно:
for (int i = 0; i < dataGridView1.RowCount; i++)
{
//...
}
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);
