Min и Max в MPI - C#

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

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

программа находит минимальный элемент в каждой строке матрицы, далее из минимальных, находит максимальный Проблемы: 1. не правильно находит max и min 2. Проблема с выводом, когда выводим max и в каком столбце и строке он был найден( не работает правильно из-за пункта 1) где ошибки, заранее огромное спасибо
Листинг программы
  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. using (new MPI.Environment(ref args))
  6. {
  7. Intracommunicator comm = Communicator.world;
  8. Stopwatch sWatch = new Stopwatch();
  9. int x = 0, x1 = 0, n = 0;
  10. string W = "";
  11. int Num = comm.Rank, Size = comm.Size;
  12. if (Num == 0)
  13. {
  14. Console.WriteLine("Введите ширину матрицы:");
  15. x1 = Convert.ToInt32(Console.ReadLine());
  16. Console.WriteLine("Введите количество строк матрицы:");
  17. x = Convert.ToInt32(Console.ReadLine());
  18. Console.WriteLine("Диапазон случайных чисел 0,n:");
  19. n = Convert.ToInt32(Console.ReadLine());
  20. }
  21. comm.Broadcast(ref x, 0);
  22. comm.Broadcast(ref n, 0);
  23. comm.Broadcast(ref x1, 0);
  24. int[,] mas = new int[x, x1];
  25. if (Num == 0)
  26. {
  27. Random rand = new Random();
  28. if (x <= 10 && x1 <= 10)
  29. {
  30. Console.WriteLine("Заданная матрица:");
  31. }
  32. for (int i = 0; i < x; i++)
  33. {
  34. for (int j = 0; j < x1; j++)
  35. {
  36. mas[i, j] = rand.Next(1, n);
  37. if (x <= 10 && x1 <= 10)
  38. {
  39. Console.Write(mas[i, j] + " ");
  40. }
  41. }
  42. if (x <= 10 && x1 <= 10)
  43. {
  44. Console.WriteLine();
  45. }
  46. }
  47. Console.WriteLine();
  48. }
  49. sWatch.Start();
  50. comm.Broadcast(ref mas, 0);
  51. int f = x / Size;
  52. for (int i = f * Num; i < f * (Num + 1); i++)
  53. {
  54. int min = n + 1;
  55. for (int j = 0; j < x1; j++)
  56. {
  57. if (mas[i, j] < min)
  58. {
  59. min = mas[i, j];
  60. }
  61. }
  62. W = W + " " + Convert.ToString(min);
  63. }
  64. string M;
  65. if (Num == 0) comm.Send(W, 1, 0);
  66. else
  67. {
  68. if (Num != Size - 1)
  69. {
  70. M = comm.Receive<string>(Num - 1, 0) + W;
  71. comm.Send<string>(M, Num + 1, 0);
  72. }
  73. }
  74. comm.Barrier();
  75. if (Num == Size - 1)
  76. {
  77. sWatch.Stop();
  78. String M2 = comm.Receive<string>(Num - 1, 0) + W;
  79. Console.WriteLine("Минимальные значения");
  80. Console.Write(M2);
  81. Console.WriteLine();
  82. Console.WriteLine("Максимальное значение {0}", M2.Max());
  83. int max = M2.Max();
  84. int maxx=0;
  85. for (int i = 0; i < x; i++)
  86. {
  87. for (int j = 0; j < x1; j++)
  88. {
  89. if (mas[i, j] == max)
  90. {
  91. maxx = max;
  92. Console.WriteLine("строка: {0}", i + 1);
  93. Console.WriteLine("столбец: {0}", j + 1);
  94. }
  95. if (maxx == max)
  96. {
  97. break;
  98. }
  99. }
  100. if (maxx == max)
  101. {
  102. break;
  103. }
  104. }
  105. Console.WriteLine();
  106. Console.Write("Нахождение минимальных значений заняло {0} мсек", sWatch.ElapsedMilliseconds.ToString());
  107. }
  108. }
  109. Console.WriteLine();
  110. Console.ReadLine();
  111. }
  112. }
  113. }

Решение задачи: «Min и Max в MPI»

textual
Листинг программы
  1. int x1 = 10;
  2.             int y1 = 10;
  3.             int xmin = 0;
  4.             int xmax = 0;
  5.            rowHandle = e.RowHandle;
  6.                 for (int i = 0; i < x1; i++)
  7.                 {
  8.                     for (int y = 0; y < y1; y++)
  9.                     {
  10.                         xmin = mas[i,j];
  11.                         xmax = mas[i, j];
  12.                         if (xmin > mas[i, j])
  13.                         {
  14.                             xmin = mas[i, j];
  15.                         }
  16.                         if (xmax > mas[i, j])
  17.                         {
  18.                             xmax = mas[i, j];
  19.                         }
  20.                     }
  21.                 }

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


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

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

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

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

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

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