Ошибка "Индекс находился вне границ массива" во время транспонирования матрицы - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, возникла проблема.. Мне нужно создать матрицу заданной размерности, транспарировать его и вывести на экран. Но при компиляции выходит ошибка "Индекс находился вне границ массива". Чую, код с кучей ошибок, но прошу не поливать грязью.
Листинг программы
  1. public partial class Form1 : Form
  2. {
  3. public Form1()
  4. {
  5. InitializeComponent();
  6. }
  7. private void button1_Click(object sender, EventArgs e)
  8. {
  9. int n = Convert.ToInt32(numericUpDown1.Value); //Создается массив размером NxM из NumericUpDown1 и 2 и шириной 25
  10. int m = Convert.ToInt32(numericUpDown2.Value);
  11. dataGridView1.ColumnCount = n;
  12. dataGridView1.RowCount = m;
  13. for (int i = 0; i < n; i++)
  14. {
  15. dataGridView1.Columns[i].Width = 25;
  16. }
  17. int[,] arr = new int[n, m];
  18. }
  19. private void button2_Click(object sender, EventArgs e)
  20. {
  21. int rows = dataGridView1.RowCount; // записывается массив с данными из DGV1
  22. int columns = dataGridView1.ColumnCount;
  23. int rows2 = dataGridView2.RowCount;
  24. int columns2 = dataGridView2.ColumnCount;
  25. int[,] array = new int[rows, columns];
  26. int[,] array2 = new int[columns, rows];
  27. for (int r = 0; r < rows; r++)
  28. {
  29. for (int c = 0; c < columns; c++)
  30. {
  31. array[r, c] = int.Parse(dataGridView1.Rows[r].Cells[c].Value.ToString());
  32. }
  33. }
  34. for (int i = 0; i < columns; i++) //Транспонирование
  35. {
  36. for (int j = 0; j < rows; j++)
  37. {
  38. array[i, j] = array2[j, i]; //"Индекс находился вне границ массива"
  39. }
  40. }
  41. dataGridView2.RowCount = rows; //Вывод массива в dataGridView2 - транспонированной матрицы
  42. dataGridView2.ColumnCount = columns;
  43. for (int r = 0; r < rows; r++)
  44. {
  45. for (int c = 0; c < columns; c++)
  46. {
  47. dataGridView2.Rows[r].Cells[c].Value = array[r, c].ToString();
  48. }
  49. }
  50. for (int a = 0; a < columns; a++) //Изменение размеров ячеек dataGridView2 - транспонированной матрицы
  51. {
  52. dataGridView2.Columns[a].Width = 25;
  53. }
  54. }
  55. }

Решение задачи: «Ошибка "Индекс находился вне границ массива" во время транспонирования матрицы»

textual
Листинг программы
  1. dataGridView2.RowCount = columns; //Вывод массива в dataGridView2 - транспонированной матрицы
  2.             dataGridView2.ColumnCount = rows;
  3.             for (int r = 0; r < columns; r++)
  4.             {
  5.                 for (int c = 0; c < rows; c++)
  6.                 {
  7.                     dataGridView2.Rows[r].Cells[c].Value = array2[r, c].ToString();
  8.                 }
  9.             }
  10.             for (int a = 0; a < dataGridView2.ColumnCount; a++) //Изменение размеров ячеек dataGridView2 - транспонированной матрицы
  11.             {
  12.                 dataGridView2.Columns[a].Width = 25;
  13.             }

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


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

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

9   голосов , оценка 4.111 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы