Ошибка "Индекс находился вне границ массива" во время транспонирования матрицы - 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;
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5
Похожие ответы