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++;
}
}
}
}
}
}