예제 #1
0
파일: Matrix.cs 프로젝트: kostakoida/PrP
 //поиск максимального элемента 
 public Element GetMaxValuePar(Element element)
 {
     elements = new Element[procCount];
     for (var i = 0; i < procCount; i++)
     {
         var it = i;
         tasks.Add(Task.Factory.StartNew(() => GetMaxValue(element, size * it / procCount, ((it + 1) * size) / procCount, it)));
     }
     foreach (var task in tasks)
     {
         task.Wait();
     }
     tasks.Clear();
     foreach (var el in elements)
     {
         if (el == null)
         {
             Console.WriteLine("nulll");
         }
         if (el?.Value > element.Value)
         {
             ChangeMax(element, el);
         }
     }
     return element;
 }
예제 #2
0
파일: Matrix.cs 프로젝트: kostakoida/PrP
 private void ChangeMax(Element element, float value, int row, int column)
 {
     lock (locker)
     {
         element.Row = row;
         element.Value = value;
         element.Column = column;
     }
 }
예제 #3
0
파일: Matrix.cs 프로젝트: kostakoida/PrP
 public Element GetMaxValue(Element element, int start, int end, int it)
 {
     var el = new Element() {Value = 0};
     for (; start < end; start++)
     {
         for (var j = 0; j < size; j++)
         {
             if (matrix[start, j] > el.Value)
             {
                 ChangeMax(el, matrix[start, j], start, j);
             }
         }
     }
     if (el == null)
         Console.WriteLine("NUUUUUUUUUUUUUUUUUUUUUUUUL");
     elements[it] = el;
     return element;
 }
예제 #4
0
파일: Matrix.cs 프로젝트: kostakoida/PrP
 private void ChangeMax(Element el1, Element el2)
 {
     el1.Value = el2.Value;
     el1.Column = el2.Column;
     el1.Row = el2.Row;
 }