Переделать программу, чтоб она искала максимальный элемент в 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;
        }
    }
}

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


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

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

13   голосов , оценка 4.385 из 5
Похожие ответы