Работа с матрицей (двумерным массивом) - 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; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д