Ошибка "Индекс находился вне границ массива" во время транспонирования матрицы - C#
Формулировка задачи:
Здравствуйте, возникла проблема.. Мне нужно создать матрицу заданной размерности, транспарировать его и вывести на экран. Но при компиляции выходит ошибка "Индекс находился вне границ массива". Чую, код с кучей ошибок, но прошу не поливать грязью.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int n = Convert.ToInt32(numericUpDown1.Value); //Создается массив размером NxM из NumericUpDown1 и 2 и шириной 25
int m = Convert.ToInt32(numericUpDown2.Value);
dataGridView1.ColumnCount = n;
dataGridView1.RowCount = m;
for (int i = 0; i < n; i++)
{
dataGridView1.Columns[i].Width = 25;
}
int[,] arr = new int[n, m];
}
private void button2_Click(object sender, EventArgs e)
{
int rows = dataGridView1.RowCount; // записывается массив с данными из DGV1
int columns = dataGridView1.ColumnCount;
int rows2 = dataGridView2.RowCount;
int columns2 = dataGridView2.ColumnCount;
int[,] array = new int[rows, columns];
int[,] array2 = new int[columns, rows];
for (int r = 0; r < rows; r++)
{
for (int c = 0; c < columns; c++)
{
array[r, c] = int.Parse(dataGridView1.Rows[r].Cells[c].Value.ToString());
}
}
for (int i = 0; i < columns; i++) //Транспонирование
{
for (int j = 0; j < rows; j++)
{
array[i, j] = array2[j, i]; //"Индекс находился вне границ массива"
}
}
dataGridView2.RowCount = rows; //Вывод массива в dataGridView2 - транспонированной матрицы
dataGridView2.ColumnCount = columns;
for (int r = 0; r < rows; r++)
{
for (int c = 0; c < columns; c++)
{
dataGridView2.Rows[r].Cells[c].Value = array[r, c].ToString();
}
}
for (int a = 0; a < columns; a++) //Изменение размеров ячеек dataGridView2 - транспонированной матрицы
{
dataGridView2.Columns[a].Width = 25;
}
}
}Решение задачи: «Ошибка "Индекс находился вне границ массива" во время транспонирования матрицы»
textual
Листинг программы
dataGridView2.RowCount = columns; //Вывод массива в dataGridView2 - транспонированной матрицы
dataGridView2.ColumnCount = rows;
for (int r = 0; r < columns; r++)
{
for (int c = 0; c < rows; c++)
{
dataGridView2.Rows[r].Cells[c].Value = array2[r, c].ToString();
}
}
for (int a = 0; a < dataGridView2.ColumnCount; a++) //Изменение размеров ячеек dataGridView2 - транспонированной матрицы
{
dataGridView2.Columns[a].Width = 25;
}