Переделать программу, чтоб она искала максимальный элемент в i-й строке матрицы - C#
Формулировка задачи:
Помогите переделать программу, чтоб она искала максимальный елемент в и-той строке матрицы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace pzpLab2
{
class Program
{
static int number = 30;
static int myThreadsCount = 30;
static int elCount = 0, j, m;
static int iRow = 5;
static int sum = 0;
static int[,] mas = new int[number,number];
static Random rnd = new Random();
static int finishedThreads = 0;
public class EntryPoint
{
public static void TimerProc(object state)
{ }
}
static void Main(string[] args)
{
int i; j = 0;
int WorkerThreads;
int portThreads;
for (i = 0; i < number; i++)
for (int k = 0; k < number;k++ )
mas[i,k] = rnd.Next(0, 200);
Console.WriteLine("Processor=" + Environment.ProcessorCount);
ThreadPool.GetMaxThreads(out WorkerThreads, out portThreads);
Console.WriteLine("\nMaximum worker threads: \t{0} " + "\nMaximum completion port threads: {1} ", WorkerThreads, portThreads);
int MaxThreadsCount =6;
ThreadPool.SetMaxThreads(MaxThreadsCount, MaxThreadsCount);
ThreadPool.SetMinThreads(2, 2);
for (i = 0; i < number; i++)
for (int k = 0; k < number; k++ )
Console.WriteLine("i=" + i +" k="+k+ " mas=" + mas[i, k]);
for (i = 0; i < number; i++)
{
for (int k = 0; k < number; k++)
Console.Write(mas[i, k] + " ");
Console.WriteLine();
}
Console.WriteLine("Elements of " + iRow + " row");
for (i = 0; i < number; i++)
Console.Write(mas[iRow, i] + " ");
Console.WriteLine();
Console.WriteLine("start time=" + DateTime.Now.Second);
for (i = 0; i < number; i++)
ThreadPool.QueueUserWorkItem(Function, mas[iRow,i]);
ThreadPool.GetMaxThreads(out WorkerThreads, out portThreads);
while (finishedThreads != myThreadsCount);
Console.WriteLine("\nMaximum worker threads: \t{0}" + "\nMaximum completetion port threads: {1}", WorkerThreads, portThreads);
Console.WriteLine("end time=" + DateTime.Now.Second);
Console.ReadLine();
}
public static void Function(object instance)
{
// ThreadStaticAttribute.CurrentThread.GetHashCode();
int z = (int)instance;
if (z >=50 && z<=100) elCount++;
number--;
Console.WriteLine("index=" + (99 - number) + " z=" + z + " kilkist elementiv satisfy interval[50,100]=" + elCount);
finishedThreads++;
}
}
}Решение задачи: «Переделать программу, чтоб она искала максимальный элемент в i-й строке матрицы»
textual
Листинг программы
using System;
using System.Threading;
namespace ConsoleApplication37
{
class Program
{
static void Main()
{
int[,] a = {{1, 2, 3}, {4, 5, 6}, {6, 7, 8}};
int[] maxs = GetMaxs(a);
foreach (int i in maxs)
{
Console.WriteLine(i);
}
}
private static int[] GetMaxs(int[,] a)
{
int completed = 0;
var ev = new ManualResetEvent(false);
var result = new int[a.GetLength(0)];
for (int i = 0; i < result.Length; i++)
{
int index = i;
ThreadPool.QueueUserWorkItem(state =>
{
result[index] = CalculateRow(a, index);
if (Interlocked.Increment(ref completed) == result.Length)
ev.Set();
});
}
ev.WaitOne();
return result;
}
private static int CalculateRow(int[,] a, int i)
{
int max = a[i, 0];
for (int j = 1; j < a.GetLength(1); j++)
{
if (a[i, j] > max)
max = a[i, j];
}
return max;
}
}
}