Перегрузка оператора умножения: нужно матрицу умножить на вектор, в результате нули - C#

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

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

Проблема в перегрузке умножения, нужно матрицу умножить на вектор, но получаю нули в результате. Смотрел как в отладчике наращиваются переменные и элементы вектора всегда нули. Наследование может так сказывается, не знаю. Благодарю за любую помощь))
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace попытка1
  6. {
  7. class Matrix
  8. {
  9. public int _size;
  10. public int[,] mas;
  11. public Matrix(int _size)
  12. {
  13. this._size = _size;
  14. this.mas = new int[this._size, this._size];
  15. }
  16. public void read()
  17. {
  18. Console.WriteLine("Введите " + Math.Pow(_size, 2) + " элементa(элементы матрицы)");
  19. for (int i = 0; i < _size; i++)
  20. {
  21. for (int j = 0; j < _size; j++)
  22. {
  23. mas[i, j] = int.Parse(Console.ReadLine());
  24. }
  25. }
  26. }
  27. public virtual void show()
  28. {
  29. for (int i = 0; i < _size; i++)
  30. {
  31. Console.WriteLine();
  32. for (int j = 0; j < _size; j++)
  33. {
  34. Console.Write(mas[i, j] + "\t");
  35. }
  36. }
  37. }
  38. public void trans()
  39. {
  40. int tmp;
  41. for (int i = 0; i < _size; i++)
  42. {
  43. for (int j = 0; j < i; j++)
  44. {
  45. tmp = mas[i, j];
  46. mas[i, j] = mas[j, i];
  47. mas[j, i] = tmp;
  48. }
  49. }
  50. }
  51. public static extraMatrix operator *(Matrix matr1, extraMatrix matr2)
  52. {
  53. extraMatrix result = new extraMatrix(matr2._Column);
  54. if (matr1._size != matr2._Column)
  55. throw new ArgumentException("Размерность матрицы и длина вектора должны строго совпадать");
  56. else
  57. {
  58. int k = 0;
  59. int g = 0;
  60. for (int i = 0; i < 1; i++)
  61. {
  62. for (int j = 0; j < matr2._Column; j++)
  63. {
  64. k += matr1.mas[g, j];
  65. }
  66. result.mas[i, g] = matr2.mas[i, g];
  67. g++;
  68. }
  69. return result;
  70. }
  71. }
  72. }
  73. public interface IVector
  74. {
  75. void CreateVector();
  76. }
  77. class extraMatrix : Matrix, IVector
  78. {
  79. public int _Column;
  80. public int[,] extraMas;
  81. public extraMatrix(int _Column)
  82. : base(_Column)
  83. {
  84. this._Column = _Column;
  85. this.extraMas = new int[1, _Column];
  86. }
  87. public void CreateVector()
  88. {
  89. Console.WriteLine("\n\nВведите " + _Column + " элементa(элементы вектора)");
  90. for (int i = 0; i < 1; i++)
  91. {
  92. for (int j = 0; j < _Column; j++)
  93. {
  94. extraMas[i, j] = int.Parse(Console.ReadLine());
  95. }
  96. }
  97. }
  98. public override void show()
  99. {
  100. Console.WriteLine("\n\n");
  101. for (int i = 0; i < 1; i++)
  102. {
  103. for (int j = 0; j < _Column; j++)
  104. {
  105. Console.Write(extraMas[i, j] + "\t");
  106. }
  107. }
  108. }
  109.  
  110. class Program
  111. {
  112. static void Main(string[] args)
  113. {
  114. Console.WriteLine("Введите размерность матрицы");
  115. int _size = int.Parse(Console.ReadLine());
  116. Console.WriteLine("Введите длину вектора");
  117. int _sizeRow = int.Parse(Console.ReadLine());
  118. Matrix one = new Matrix(_size);
  119. one.read();
  120. one.show();
  121. extraMatrix two = new extraMatrix(_sizeRow);
  122. two.CreateVector();
  123. two.show();
  124. extraMatrix three = new extraMatrix(_sizeRow);
  125. three = one * two;
  126. three.show();
  127.  
  128. Console.ReadKey();
  129. }
  130. }
  131. }
  132. }

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

textual
Листинг программы
  1. int k = 0;
  2.                 int g = 0;
  3.                 for (int i = 0; i < 1; i++)
  4.                 {
  5.                     for (int j = 0; j < matr2._Column; j++)
  6.                     {
  7.                         k += matr1.mas[g, j];
  8.                        
  9.                     }
  10.                     result.mas[i, g] = k * matr2.mas[i, g];
  11.                     g++;
  12.                 }

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


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

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

12   голосов , оценка 3.917 из 5

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

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

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