Перемножение двух матриц - C#

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

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

Здравствуйте, выполняю для саморазвития не большой пример по перемножению двух матриц на C#. И когда пытаюсь занести в массив рандомные значение, у меня прекращается работа программы и выдает ошибку о том,что "Индекс находился вне границ массива". Не могу понять в чем проблема,прощу помочь разобраться в этом.
Листинг программы
  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. Random r = new Random();
  6. int a_rows, a_collumns, b_rows, b_collumns;
  7. Console.ForegroundColor = ConsoleColor.White;
  8. for (;;)
  9. {
  10. Console.WriteLine("Используйте свойство,что кол. столбцов первой матрицы \n должно равняться кол.строк второй матрицы");
  11. try
  12. {
  13. Console.WriteLine("Введите кол.строк первой матрицы");
  14. a_rows = Convert.ToInt32(Console.ReadLine());
  15. Console.WriteLine("Введите кол.столбцов первой матрицы");
  16. a_collumns = Convert.ToInt32(Console.ReadLine());
  17. Console.WriteLine("Введите кол.строк второй матрицы");
  18. b_rows = Convert.ToInt32(Console.ReadLine());
  19. if (a_collumns != b_rows)
  20. continue;
  21. Console.WriteLine("Введите кол.столбцов второй матрицы");
  22. b_collumns = Convert.ToInt32(Console.ReadLine());
  23. break;
  24. }
  25. catch
  26. {
  27. Console.ForegroundColor = ConsoleColor.Red;
  28. Console.WriteLine("Вы можете вводить только цифры.");
  29. Console.ForegroundColor = ConsoleColor.White;
  30. }
  31. }
  32. Matrix a = new Matrix(a_rows, a_collumns);
  33. Matrix b = new Matrix(b_rows, b_collumns);
  34. Matrix c = new Matrix(a_collumns, b_rows);
  35. for (int i = 0; i < a_rows; i++)
  36. for (int j = 0; j < a_collumns; i++)
  37. a[i, j] = r.Next(4,100);
  38. for (int i = 0; i < b_rows; i++)
  39. for (int j = 0; j < b_collumns; i++)
  40. b[i, j] = r.Next(4,100);
  41. a.show();
  42. b.show();
  43. c.show();
  44. }
  45. }
  46. class Matrix
  47. {
  48. int[,] array;
  49. int rows, collumns;
  50. public int Collumns
  51. {
  52. get { return collumns; }
  53. set
  54. {
  55. if (value > 0)
  56. collumns = value;
  57. }
  58. }
  59. public int Rows
  60. {
  61. get
  62. {return rows;}
  63. set
  64. {
  65. if (value > 0)
  66. rows = value;
  67. }
  68. }
  69. public int this[int i, int j] // индексатор
  70. {
  71. get { return array[i, j]; }
  72. set {
  73. array[i, j] = value; }
  74. }
  75. public Matrix(int countofRows, int countofCollumns)
  76. {
  77. Rows = countofRows;
  78. Collumns = countofCollumns;
  79. array = new int[Rows, Collumns];
  80. }
  81. public void show()
  82. {
  83. for (int i = 0; i < Rows; i++)
  84. {
  85. for (int j = 0; j < Collumns; j++)
  86. {
  87. Console.Write("{0,6}",array[i, j]);
  88. }
  89. Console.WriteLine();
  90. }
  91. Console.ReadLine();
  92. }
  93. }

Решение задачи: «Перемножение двух матриц»

textual
Листинг программы
  1. i++

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


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

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

6   голосов , оценка 4.5 из 5

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

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

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