Массив и его локальные минимумы - C#
Формулировка задачи:
Не имею ни малейшего понятия как выполнить это задание:
"Дана матрица размерности MxN. Елемент называется локальным минимумом, если он меньше всех соседних елементов. Заменить все локальные минимумы данной матрицы на 0."
Если кто поможет, буду чрезвычайно благодарен
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication3
{
class Program
{
public static void Main(string[] args)
{
Console.Write("Введите размерность матрицы: ");
int m = int.Parse(Console.ReadLine());
int n = int.Parse(Console.ReadLine());
int[,] mas = new int[m, n];
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write("x[" + (i+1) + "," + (j+1) + "]=");
mas[i, j] = int.Parse(Console.ReadLine());
}
Console.WriteLine();
}
MasOut(m, n, mas);
/*for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
if()
}
}*/
Console.ReadKey();
}
static void MasOut(int x, int y, int[,] mas)
{
for (int i = 0; i < x; i++)
{
for (int j = 0; j < x; j++)
{
Console.Write("x[" + (i + 1) + "," + (j + 1) + "]=" + mas[i, j] + " ");
}
Console.WriteLine("\n");
}
}
//3. Дана матриця розмірності MxN.Елемент називається локальним мінімумом, якщо він менше всіх сусідніх елементів. Замінити всі локальні мінімуми даної матриці на 0.
}
}Решение задачи: «Массив и его локальные минимумы»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication3
{
class Program
{
public static void Main(string[] args)
{
Console.Write("Введите количество строк матрицы: ");
int m = int.Parse(Console.ReadLine());
Console.Write("Введите количество столбцов матрицы: ");
int n = int.Parse(Console.ReadLine());
int[,] mas = new int[m, n];
int[,] sortedMas = new int[m, n];
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write("x[" + (i+1) + "," + (j+1) + "]=");
mas[i, j] = int.Parse(Console.ReadLine());
sortedMas[i, j] = mas[i, j];
}
Console.WriteLine();
}
MasOut(m, n, sortedMas);
for (int i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
{
if(isLocalMinimum(mas, i, j, m, n) == true)
{
sortedMas[i, j] = 0;
}
}
}
MasOut(m, n, sortedMas);
Console.ReadKey();
}
static void MasOut(int x, int y, int[,] mas) //Вывод массива
{
for (int i = 0; i < x; i++)
{
for (int j = 0; j < x; j++)
{
Console.Write("x[" + (i + 1) + "," + (j + 1) + "]=" + mas[i, j] + " ");
}
Console.WriteLine("\n");
}
}
static bool isLocalMinimum(int[,] a, int i, int j, int m, int n) //Проверка на локальный минимум
{
if (i > 0 && j > 0 && a[i, j] >= a[i - 1, j - 1]) return false; //Сравнение с элементом слева сверху
if (i > 0 && a[i, j] >= a[i - 1, j]) return false; //Сравнение с элементом сверху
if (i > 0 && j < n - 1 && a[i, j] >= a[i - 1, j + 1]) return false; //Сравнение с элементом справа сверху
if (j > 0 && a[i, j] >= a[i, j - 1]) return false; //Сравнение с элементом слева
if (j < n - 1 && a[i, j] >= a[i, j + 1]) return false; //Сравнение с элементом справа
if (i < m - 1 && j > 0 && a[i, j] >= a[i + 1, j - 1]) return false; //Сравнение с элементом слева снизу
if (i < m - 1 && a[i,j] >= a[i + 1, j]) return false; //Сравнение с элементом снизу
if (i < m - 1 && j < n - 1 && a[i, j] >= a[i + 1, j + 1]) return false; //Сравнение с элементом справа снизу
return true;
}
//3. Дана матриця розмірності MxN.Елемент називається локальним мінімумом, якщо він менше всіх сусідніх елементів. Замінити всі локальні мінімуми даної матриці на 0.
}
}