Перегрузка методов сложения матриц - C#

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

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

Задание: Создать класс

квадратная матрица

, поля класса - размерность и элементы матрицы. Методы класса: проверки, является ли матрица верхнетреугольной или нижнетреугольной, вывод матрицы. В классе предусмотреть методы перегрузки операций: сложение, вычитание, умножение матриц, умножение матрицы на число. Помогите пожалуйста. Заранее спасибо +)
Листинг программы
  1. {
  2. class Matrix
  3. {
  4. int n;
  5. double[,] A;
  6. double[,] B;
  7.  
  8. public Matrix(int n)
  9. {
  10. this.n = n;
  11. A = new double[n, n];
  12. }
  13. public Matrix(int n)
  14. {
  15. this.n = n;
  16. B = new double[n, n];
  17. }
  18. public void Create()
  19. {
  20. Random rnd = new Random();
  21. for (int i = 0; i < n; i++)
  22. {
  23. for (int j = 0; j < n; j++)
  24. {
  25. A[i, j] = rnd.Next(1, 10) + Math.Round(rnd.NextDouble(), 2);
  26. }
  27. }
  28. }
  29. public void Print()
  30. {
  31. for (int i = 0; i < n; i++)
  32. {
  33. for (int j = 0; j < n; j++)
  34. {
  35. Console.Write(A[i, j] + "\t");
  36. }
  37. Console.WriteLine();
  38. }
  39. }
  40. public void Create()
  41. {
  42. Random rnd = new Random();
  43. for (int i = 0; i < n; i++)
  44. {
  45. for (int j = 0; j < n; j++)
  46. {
  47. B[i, j] = rnd.Next(1, 10) + Math.Round(rnd.NextDouble(), 2);
  48. }
  49. }
  50. }
  51.  
  52. public void Print()
  53. {
  54. for (int i = 0; i < n; i++)
  55. {
  56. for (int j = 0; j < n; j++)
  57. {
  58. Console.Write(B[i, j] + "\t");
  59. }
  60. Console.WriteLine();
  61. }
  62. }
  63.  
  64. public static Matrix operator +(Matrix A, Matrix B)
  65. {
  66. for (int i = 0; i < A.n; i++)
  67. {
  68. for (int j = 0; j < A.n; j++)
  69. {
  70. Matrix C[i, j] = A[i, j] + B[i, j];
  71. }
  72. }
  73. return C;
  74. }
  75. public static Matrix operator -(Matrix A, Matrix B)
  76. {
  77. for (int i = 0; i < A.n; i++)
  78. {
  79. for (int j = 0; j < A.n; j++)
  80. {
  81. Matrix D[i, j] = A[i, j] - B[i, j];
  82. }
  83. }
  84. return D;
  85. }
  86. public static Matrix operator *(Matrix A, Matrix B)
  87. {
  88. for (int i = 0; i < A.n; i++)
  89. {
  90. for (int j = 0; j < A.n; j++)
  91. {
  92. Matrix E[i, j] = A[i, j] + B[i, j];
  93. }
  94. }
  95. return E;
  96. }
  97. }
  98. }
  99.  
  100. class Program
  101. {
  102. static void Main(string[] args)
  103. {
  104. Console.WriteLine("Введите N");
  105. int n = int.Parse(Console.ReadLine());
  106. Matrix A = new Matrix(n);
  107. A.Create();
  108. A.Print();
  109. Matrix B = new Matrix(n);
  110. B.Create();
  111. B.Print();
  112. Matrix C = A + B;
  113.  
  114. Console.ReadLine();
  115. }
  116. }
Не работает перегрузка методов =(
P.S. К этому еще событие написать надо (в этом я вообще "0")...

Решение задачи: «Перегрузка методов сложения матриц»

textual
Листинг программы
  1. public static Matrix operator *(Matrix A, Matrix B)
  2.         {
  3.  if(A.n!=B.n) throw ArgumentException();
  4.             Matrix E = new Matrix(A.n);
  5.             for (int i = 0; i < A.n; i++)
  6.             {
  7.                 for (int j = 0; j < A.n; j++)
  8.                 {
  9.                     E.data[i, j] = 0;
  10.                     for (int k = 0; k < A.n; k++)
  11.                     {
  12. //вы тут перепутали порядок коефициентов
  13.                         E.data[i, j] = E.data[i, j] + A.data[i, k] * B.data[k, i];
  14.                     }
  15.                 }
  16.             }
  17.             return E;
  18.         }

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


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

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

13   голосов , оценка 4.077 из 5

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

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

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