Вычислить евклидову норма вектора. Используя класс Task или Parallel. Параллельное программирование - C#

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

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

Народ помогите!!!

Решение задачи: «Вычислить евклидову норма вектора. Используя класс Task или Parallel. Параллельное программирование»

textual
Листинг программы
  1. namespace CyberForum_ParallelVectorNorm
  2. {
  3.     class Program
  4.     {
  5.         static void Main(string[] args)
  6.         {
  7.             var vector = new double[] { 2, 2, 2, 2, 2 }; // Вектор
  8.             var taskCount = 3; //Число параллельных задач
  9.  
  10.             var sum = CalculateSum(vector, taskCount); //Параллельный подсчет суммы
  11.             var norm = Math.Sqrt(sum);
  12.             Console.WriteLine("Сумма квадратов: "+sum+"; Норма вектора: "+norm);
  13.             Console.ReadKey();
  14.         }
  15.  
  16.         private static double CalculateSum(double[] vector, int taskCount)
  17.         {
  18.             var len = vector.Length;
  19.  
  20.             //Не может быть задач больше числа элементов вектора
  21.             if (taskCount > len)
  22.                 throw new ArgumentException();
  23.  
  24.             var step = (len + 1) / taskCount; //Интервал для суммы
  25.             var tasks = new Task<double>[taskCount];
  26.             for (var i = 0; i < taskCount; i++)
  27.             {
  28.                 tasks[i] = Task<double>.Factory.StartNew((obj) => Sum(vector, (int)obj * step, ((int)obj + 1) * step - 1), i);
  29.             }
  30.             Task.WaitAll(tasks);
  31.             var sum = tasks.Select(x => x.Result).Sum();
  32.             return sum;
  33.         }
  34.  
  35.        
  36.  
  37.         static double Sum(IEnumerable<double> vector, int index1, int index2)
  38.         {
  39.             index2 = index2 >= vector.Count() ? vector.Count() : index2;
  40.             return vector.Skip(index1).Take(index2 - index1+1).Select(x => x * x).Sum();
  41.         }
  42.     }
  43. }

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


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

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

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

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

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

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