Прямоугольная матрица - C# (217757)
Формулировка задачи:
Ребят помогите пожалуйста!
Замаскируйте задание,так чтоб смысл остался тот же,а само оно немного отличалось!
Пожалуйста!!!
Задание:
using System; namespace Matrix { class InpOut { public static void Fill(int[,] mass, Random r, int a, int b) { r = new Random(); for (int j = 0; j < mass.GetLength(1); j++) for (int i = 0; i < mass.GetLength(0); i++) mass[i, j] = r.Next(a, b + 1); } public static void Print(int[,] mass) { for (int j = 0; j < mass.GetLength(1); j++, Console.WriteLine()) for (int i = 0; i < mass.GetLength(0); i++) Console.Write("{0,4}", mass[i, j]); } } class NegativeElement { private static int NegativeCount(int[,] mass, int n) { int count = 0; for (int i = 0; i < mass.GetLength(0); i++) if (mass[i, n] < 0) count++; return count; } public static void ZeroSearch(int[,] mass) { int nc; bool flag; for (int j = 0; j < mass.GetLength(1); j++) { nc = 0; flag = false; for (int i = 0; i < mass.GetLength(0); i++) { if (mass[i, j] == 0) { flag = true; nc = NegativeCount(mass, j); break; } } if (!flag) Console.WriteLine("В строке №{0} нулевых элементов нет", j + 1); else Console.WriteLine("Строка №{0} содержит {1} отрицательных элементов", j + 1, nc); } } } class SaddlePoints { private static int MinInLine(int[,] mass, int n) { int min = int.MaxValue; for (int i = 0; i < mass.GetLength(0); i++) if (mass[i, n] < min) min = mass[i, n]; return min; } private static int MaxInColumn(int[,] mass, int n) { int max = int.MinValue; for (int j = 0; j < mass.GetLength(1); j++) if (mass[n, j] > max) max = mass[n, j]; return max; } public static void SearchSaddlePoints(int[,] mass) { int localMin; int count = 0; for (int j = 0; j < mass.GetLength(1); j++) { localMin = MinInLine(mass, j); for (int i = 0; i < mass.GetLength(0); i++) { if (localMin == mass[i, j] && MaxInColumn(mass, i) == mass[i, j]) { count++; Console.WriteLine("Найдена седловая точка матрицы №{0}: столбец - {1}, строка - {2}", count, i + 1, j + 1); } } } if (count == 0) Console.WriteLine("Матрица не имеет седловых точек."); } } class MainClass { public static void Main() { int x, y; int[,] matr; Random r = new Random(); do Console.Write("Введите количество столбцов матрицы: "); while (!int.TryParse(Console.ReadLine(), out x) || x <= 0); do Console.Write("Введите количество строк матрицы: "); while (!int.TryParse(Console.ReadLine(), out y) || y <= 0); Console.WriteLine(); class MainClass { public static void Main() { int x, y; int[,] matr; Random r = new Random(); do Console.Write("Введите количество столбцов матрицы: "); while (!int.TryParse(Console.ReadLine(), out x) || x <= 0); do Console.Write("Введите количество строк матрицы: "); while (!int.TryParse(Console.ReadLine(), out y) || y <= 0); Console.WriteLine(); matr = new int[x, y]; InpOut.Fill(matr, r, -2, 2); InpOut.Print(matr); NegativeElement.ZeroSearch(matr); Console.WriteLine(); SaddlePoints.SearchSaddlePoints(matr); Console.ReadKey(); } } }
Решение задачи: «Прямоугольная матрица»
textual
Листинг программы
using System; namespace Matrix{ class InpOut{ public static void Fill(int[,] mass, Random r, int a, int b){r = new Random();for (int j = 0; j < mass.GetLength(1); j++)for (int i = 0; i < mass.GetLength(0); i++)mass[i, j] = r.Next(a, b + 1);} public static void Print(int[,] mass){for (int j = 0; j < mass.GetLength(1); j++, Console.WriteLine())for (int i = 0; i < mass.GetLength(0); i++)Console.Write("{0,4}", mass[i, j]);}} class NegativeElement{ private static int NegativeCount(int[,] mass, int n) {int count = 0;for (int i = 0; i < mass.GetLength(0); i++)if (mass[i, n] < 0)count++;return count;} public static void ZeroSearch(int[,] mass){int nc;bool flag;for (int j = 0; j < mass.GetLength(1); j++){nc = 0;flag = false;for (int i = 0; i < mass.GetLength(0); i++){if (mass[i, j] == 0){flag = true;nc = NegativeCount(mass, j);break;}}if (!flag)Console.WriteLine("В строке №{0} нулевых элементов нет", j + 1);else Console.WriteLine("Строка №{0} содержит {1} отрицательных элементов", j + 1, nc);}}} class SaddlePoints{ private static int MinInLine(int[,] mass, int n){int min = int.MaxValue;for (int i = 0; i < mass.GetLength(0); i++)if (mass[i, n] < min)min = mass[i, n];return min;} private static int MaxInColumn(int[,] mass, int n){int max = int.MinValue;for (int j = 0; j < mass.GetLength(1); j++)if (mass[n, j] > max)max = mass[n, j];return max;} public static void SearchSaddlePoints(int[,] mass) {int localMin;int count = 0;for (int j = 0; j < mass.GetLength(1); j++){localMin = MinInLine(mass, j);for (int i = 0; i < mass.GetLength(0); i++){if (localMin == mass[i, j] && MaxInColumn(mass, i) == mass[i, j]){ count++;Console.WriteLine("Найдена седловая точка матрицы №{0}: столбец - {1}, строка - {2}", count, i + 1, j + 1);}}}if (count == 0)Console.WriteLine("Матрица не имеет седловых точек.");} } class MainClass{ public static void Main(){int x, y;int[,] matr;Random r = new Random(); do Console.Write("Введите количество столбцов матрицы: "); while (!int.TryParse(Console.ReadLine(), out x) || x <= 0); do Console.Write("Введите количество строк матрицы: "); while (!int.TryParse(Console.ReadLine(), out y) || y <= 0);Console.WriteLine(); class MainClass{ public static void Main(){int x, y;int[,] matr;Random r = new Random(); do Console.Write("Введите количество столбцов матрицы: ");while (!int.TryParse(Console.ReadLine(), out x) || x <= 0);do Console.Write("Введите количество строк матрицы: "); while (!int.TryParse(Console.ReadLine(), out y) || y <= 0); Console.WriteLine(); matr = new int[x, y]; InpOut.Fill(matr, r, -2, 2); InpOut.Print(matr); NegativeElement.ZeroSearch(matr); Console.WriteLine(); SaddlePoints.SearchSaddlePoints(matr); Console.ReadKey(); }}}
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д