Ошибка "Индекс находился вне границ массива" во время транспонирования матрицы - 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д