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