Переделать программу, чтоб она искала максимальный элемент в 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; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д