Работа с матрицей (двумерным массивом) - C#
Формулировка задачи:
Задача такая, дан нам этот массив(мы сами вводим его как столбцы, так и строки), надо найти особые числа, это те у которых пред идущий элемент меньше, а последующий больше их и в СТОЛБЦЕ он самый большой...
Сделал все до места где надо написать алгоритм по которому особое число будет находиться, можете с ним помочь? я не понимаю его. Ниже код
static void Main(string[] args)
{
Console.WriteLine("Введите сколько строк будет в матрице");
int N = Convert.ToInt32(Console.ReadLine()); // ввод строк
Console.WriteLine("Введите сколько столбцов будет в матрице");
int M = Convert.ToInt32(Console.ReadLine()); // ввод столбцов
int[,] mass = new int[N, M]; // создание массива
for (int i = 0; i < N; i++) //цикл по строкам // цикл записывания в матрицу чисел
for (int j = 0; j < M; j++) //цикл по столбцам
{
Console.Write("Введите элемент матрицы ({0},{1}) ", i + 1, j + 1);
mass[i, j] = Convert.ToInt32(Console.ReadLine());
}
int spec4is = 0; // переменная куда будет записываться сколько у нас таких чисел
{
*/ Вот тут надо написать, код, но что я не пробовал ничего не работает, подскажите как решить задачу*/
}
Console.WriteLine("\nВсего особых элементов: {0}", spec_sym);
Console.ReadLine();Решение задачи: «Работа с матрицей (двумерным массивом)»
textual
Листинг программы
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите сколько строк будет в матрице");
int N = Convert.ToInt32(Console.ReadLine()); // ввод строк
Console.WriteLine("Введите сколько столбцов будет в матрице");
int M = Convert.ToInt32(Console.ReadLine()); // ввод столбцов
int[,] mass = new int[N, M]; // создание массива
for (int i = 0; i < N; i++) //цикл по строкам // цикл записывания в матрицу чисел
for (int j = 0; j < M; j++) //цикл по столбцам
{
Console.Write("Введите элемент матрицы ({0},{1}) ", i + 1, j + 1);
mass[i, j] = Convert.ToInt32(Console.ReadLine());
}
PrintSpecialNumbers(mass);
Console.ReadLine();
}
static void PrintSpecialNumbers(int[,] matrix)
{
int count = 0;
for (int x = 1; x < matrix.GetLength(1) - 1; ++x)
{
int max = GetMaxInColumn(matrix, x);
for (int y = 0; y < matrix.GetLength(0); ++y)
if (max == matrix[y, x] && matrix[y, x] > matrix[y, x - 1] && matrix[y, x] < matrix[y, x + 1])
{
Console.WriteLine("M[{0}, {1}] = {2}", y, x, matrix[y, x]);
++count;
}
}
Console.WriteLine("\nВсего особых элементов: {0}", count);
}
static int GetMaxInColumn(int[,] matrix, int column)
{
int max = int.MinValue;
for (int i = 0; i < matrix.GetLength(0); ++i)
max = Math.Max(max, matrix[i, column]);
return max;
}
}