Поиск седловых точек матрицы - C#
Формулировка задачи:
Дана целочисленная прямоугольная матрица. Определить:
• сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент;
• номера строк и столбцов всех седловых точек матрицы.
ПРИМЕЧАНИЕ
Матрица А имеет седловую точку Аij, если Аij является минимальным элементом в i-й строке и максимальным — в j-м столбце.
Решение задачи: «Поиск седловых точек матрицы»
textual
Листинг программы
class Program { static void Main() { const int width = 5, height = 3; int[,] array = new int[height,width]; Random rnd = new Random(); for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { array[i, j] = rnd.Next(-10, 50); } } ShowArray(array); Console.WriteLine("=================================="); SumWhereIsNegativeElement(array); Console.WriteLine("=================================="); SaddlePoints(array); Console.ReadLine(); } /// <summary> /// Номера строк и столбцов всех седловых точек матрицы. /// </summary> private static void SaddlePoints(int[,] array) { for (int i = 0; i < array.GetLength(0); i++) { for (int j = 0; j < array.GetLength(1); j++) { if (!IsMinInRow(array, i, j) || !IsMaxInCol(array, i, j)) continue; Console.WriteLine(" Элемент {0} является седловым.", array[i, j]); Console.WriteLine("Строка: {0}\tстолбец: {1}", i + 1, j + 1); } } } private static bool IsMaxInCol(int[,] array, int i, int j) { for (int k = 0; k < array.GetLength(0); k++) { if (array[k, j] > array[i, j]) return false; } return true; } private static bool IsMinInRow(int[,] array, int i, int j) { for (int k = 0; k < array.GetLength(1); k++) { if (array[i, k] < array[i, j]) return false; } return true; } /// <summary> /// Сумма элементов в тех строках, которые содержат хотя бы один отрицательный элемент /// </summary> private static void SumWhereIsNegativeElement(int[,] array) { for (int i = 0; i < array.GetLength(0); i++) { bool isNegative = false; int sum = 0; for (int j = 0; j < array.GetLength(1); j++) { sum += array[i, j]; if (array[i, j] < 0) isNegative = true; } if (!isNegative) continue; Console.WriteLine(" {0} строка имеет отрицательный элемент.", i + 1); Console.WriteLine("Сумма элементов: {0}", sum); } } private static void ShowArray(int[,] array) { for (int i = 0; i < array.GetLength(0); i++) { for (int j = 0; j < array.GetLength(1); j++) { Console.Write("{0}\t", array[i, j]); } Console.WriteLine(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д