Загрузка данных


using System;

namespace MatrixMaxFinder
{
    class Program
    {
        static void Main(string[] args)
        {
            // В C# массивы нужно инициализировать перед передачей в метод,
            // поэтому мы сначала спросим размеры, а потом создадим матрицу.
            int n, m;
            Console.Write("Количество строк - ");
            n = int.Parse(Console.ReadLine());
            Console.Write("Количество столбцов - ");
            m = int.Parse(Console.ReadLine());

            int[,] A = new int[n, m];

            // Вызов процедуры ввода-вывода матрицы
            InputOutput(A);

            // Переменные для хранения результатов
            int Amax;
            int K;

            // Вызов процедуры поиска максимального элемента
            MaxElement(A, out Amax);

            // Вызов процедуры подсчета числа вхождений максимального элемента
            HowMuch(A, Amax, out K);

            Console.WriteLine($"Максимальное число {Amax} встречается {K} раз(а)");
            Console.ReadKey();
        }

        // Процедура ввода и вывода матрицы
        static void InputOutput(int[,] A)
        {
            int n = A.GetLength(0); // Количество строк
            int m = A.GetLength(1); // Количество столбцов

            Console.WriteLine("Ввод матрицы:");
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    Console.Write($"A[{i + 1},{j + 1}]= ? ");
                    A[i, j] = int.Parse(Console.ReadLine());
                }
            }

            Console.Clear();
            Console.WriteLine("Матрица A:");

            // Красивый вывод матрицы с выравниванием по правому краю
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    // {0,5} означает выделить 5 символов под число и выровнять по правому краю
                    Console.Write("{0,5} ", A[i, j]); 
                }
                Console.WriteLine(); // Переход на новую строку после каждой строки матрицы
            }
            Console.WriteLine(); // Пустая строка для отступа
        }

        // Процедура поиска максимального элемента
        static void MaxElement(int[,] A, out int Amax)
        {
            int n = A.GetLength(0);
            int m = A.GetLength(1);

            Amax = A[0, 0];
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    if (A[i, j] > Amax)
                    {
                        Amax = A[i, j];
                    }
                }
            }
        }

        // Процедура подсчета числа вхождений Amax
        static void HowMuch(int[,] A, int Amax, out int K)
        {
            int n = A.GetLength(0);
            int m = A.GetLength(1);

            K = 0;
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    if (A[i, j] == Amax)
                    {
                        K++;
                    }
                }
            }
        }
    }
}