Перемножить элементы строк матрицы и получить из этих произведений вектор - C#

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

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

Привет всем жителям сего форума! Вот писал программку для ввода матриц размерностью 5х4 (A и B), после чего происходило вычисление по некоторым формулам, а так же транспонирование суммы, в итоге матрица получилась размером 5х5. Задача состоит в том, чтобы перемножить элементы строк матрицы и получить из этих произведений вектор. Я так понял, что надо сначала преобразовать элементы в числовые значения, а после перемножить, но так и не разобрался как все это делается.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace ConsoleApplication1
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. // Объявляем массивы
  12. double[,] A = new double[5, 4];
  13. double[,] B = new double[5, 4];
  14. double[,] C = new double[5, 5];
  15. string s;
  16. // Ввод матриц A
  17. for (int i = 0; i < 5; i++)
  18. {
  19. Console.WriteLine("Введите [{0}]-ю строку матрицы A", i);
  20. s = Console.ReadLine();
  21. string[] ts = s.Split(' ');
  22. for (int j = 0; j < 4; j++)
  23. A[i, j] = Convert.ToDouble(ts[j]);
  24. }
  25. // Ввод матрицы B
  26. for (int i = 0; i < 5; i++)
  27. {
  28. Console.WriteLine("Введите [{0}]-ю строку матрицы B", i);
  29. s = Console.ReadLine();
  30. string[] ts = s.Split(' ');
  31. for (int j = 0; j < 4; j++)
  32. A[i, j] = Convert.ToDouble(ts[j]);
  33. }
  34. // C=(A+B)^T*(B-A)
  35. double [,] SAB = new double [5,4]; // сумма A и B
  36. double [,] RBA = new double [5,4]; // разность A и B
  37. double [,] TAB = new double [4,5]; // транспонирование суммы A и B
  38. double [,] PTP = new double [5,5]; // C
  39. // A + B
  40. for (int i = 0; i < 5; i++)
  41. for (int j = 0; j < 4; j++)
  42. SAB[i, j] = A[i, j] + B[i, j];
  43. // B - A
  44. for (int i = 0; i < 5; i++)
  45. for (int j =0; j < 4; j++)
  46. RBA [i,j] = B[i,j] - A[i,j];
  47. // транспонирование
  48. for (int i = 0; i < 5; i++)
  49. for (int j = 0; j < 4; j++)
  50. TAB[j, i] = SAB[i, j];
  51. // произаедение
  52. for (int i = 0; i < 5; ++i)
  53. {
  54. for (int j = 0; j < 5; ++j)
  55. {
  56. PTP[i, j] = 0;
  57. for (int k = 0; k < 4; ++k)
  58. {
  59. PTP[i, j] += SAB[i, k] * TAB[k, j];
  60. }
  61. }
  62. }
  63. // Вывод результатов
  64. Console.WriteLine("");
  65. Console.WriteLine("C=(A+B)^T*(B-A):");
  66. for (int i = 0; i < 5; i++)
  67. {
  68. for (int j = 0; j < 5; j++)
  69. Console.Write(PTP[i, j] + " ");
  70. Console.WriteLine();
  71. }
  72. // Press Any Key
  73. Console.WriteLine("");
  74. Console.WriteLine("Press any key to exit");
  75. Console.ReadKey();
  76. }
  77. }
  78. }
Какими-то неведомыми силами получилось составить алгоритм среднего гармонического, но при выводе данных мне требуется форматировать, чтоб вывод был с двумя знаками после запятой. Пробовал таким методом: Console.WriteLine("{0:f2}", ZV); Выводит просто 0.00 В чем косяк? Теперишний код:
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. namespace ConsoleApplication1
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. // Объявляем массивы
  13. double[,] A = new double[5, 4];
  14. double[,] B = new double[5, 4];
  15. double[,] C = new double[5, 5];
  16. string s;
  17. // Ввод матриц A
  18. for (int i = 0; i < 5; i++)
  19. {
  20. Console.WriteLine("Введите [{0}]-ю строку матрицы A", i);
  21. s = Console.ReadLine();
  22. string[] ts = s.Split(' ');
  23. for (int j = 0; j < 4; j++)
  24. A[i, j] = Convert.ToDouble(ts[j]);
  25. }
  26. // Ввод матрицы B
  27. for (int i = 0; i < 5; i++)
  28. {
  29. Console.WriteLine("Введите [{0}]-ю строку матрицы B", i);
  30. s = Console.ReadLine();
  31. string[] ts = s.Split(' ');
  32. for (int j = 0; j < 4; j++)
  33. A[i, j] = Convert.ToDouble(ts[j]);
  34. }
  35. // C=(A+B)^T*(B-A)
  36. double[,] SAB = new double[5, 4]; // сумма A и B
  37. double[,] RBA = new double[5, 4]; // разность A и B
  38. double[,] TAB = new double[4, 5]; // транспонирование суммы A и B
  39. double[,] PTP = new double[5, 5]; // C
  40. // A + B
  41. for (int i = 0; i < 5; i++)
  42. for (int j = 0; j < 4; j++)
  43. SAB[i, j] = A[i, j] + B[i, j];
  44. // B - A
  45. for (int i = 0; i < 5; i++)
  46. for (int j = 0; j < 4; j++)
  47. RBA[i, j] = B[i, j] - A[i, j];
  48. // транспонирование
  49. for (int i = 0; i < 5; i++)
  50. for (int j = 0; j < 4; j++)
  51. TAB[j, i] = SAB[i, j];
  52. // произаедение
  53. for (int i = 0; i < 5; ++i)
  54. {
  55. for (int j = 0; j < 5; ++j)
  56. {
  57. PTP[i, j] = 0;
  58. for (int k = 0; k < 4; ++k)
  59. {
  60. PTP[i, j] += SAB[i, k] * TAB[k, j];
  61. }
  62. }
  63. }
  64. // Вектор
  65. double[] v = new double[5];
  66. for (int r = 0; r < 5; r++)
  67. {
  68. v[r] = 1;
  69. for (int c = 0; c < 5; c++) v[r] *= PTP[r, c];
  70. }
  71. // Среднее гармоническое
  72. double ZV = 0;
  73. for (int i = 1; i < 5; i++)
  74. ZV += 1 / v[i];
  75. ZV = ZV/5;
  76. // Вывод результатов
  77. Console.WriteLine("");
  78. Console.WriteLine("C=(A+B)^T*(B-A):");
  79. for (int i = 0; i < 5; i++)
  80. {
  81. for (int j = 0; j < 5; j++)
  82. {
  83. Console.Write(PTP[i, j] + " ");
  84. }
  85. Console.WriteLine();
  86. }
  87. // Вектор
  88. Console.WriteLine("");
  89. Console.WriteLine("Вектор:");
  90. for (int i = 0; i < 5; i++)
  91. Console.Write("{0} ", v[i]);
  92. Console.WriteLine();
  93. // Среднее гармоническое
  94. Console.WriteLine("");
  95. Console.WriteLine("Среднее гармоническое вектора:");
  96. Console.WriteLine("{0:f2}", ZV);
  97. // Press Any Key
  98. Console.WriteLine("");
  99. Console.WriteLine("Press any key to exit");
  100. Console.ReadKey();
  101. }
  102. }
  103. }

Решение задачи: «Перемножить элементы строк матрицы и получить из этих произведений вектор»

textual
Листинг программы
  1. Console.WriteLine("{0:f20}", ZV);

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


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

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

15   голосов , оценка 3.933 из 5

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

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

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