Матрица: определить номер строки, в которой находится самая длинная серия одинаковых элементов - C#
Формулировка задачи:
Дана целочисленная прямоугольная матрица.Определить:
- количество столбцов,содержащих хотя бы один нулевой элемент;
- номер строки, в которой находится самая длинная серия одинаковых элементов.
Не могу понять, метод FindLine, который находит номер строки, в которой находится самая длинная серия одинаковых элементов. у меня правильно написан или нет? а то уже вся голова сломалась над ним думать.
using System; namespace Matrix3 { class Program { static void Main(string[] args) { Console.WriteLine("Введите размерность матрицы"); Console.Write("Число строк n = "); int n = Convert.ToInt32(Console.ReadLine()); Console.Write("Число столбцов m = "); int m = Convert.ToInt32(Console.ReadLine()); int[,] mas = CreateMatrix(n, m); ShowMatrix(mas, "Исходная матрица:"); Console.WriteLine("Количество столбцов, содержащих хотя бы один нулевой элемент, равно " + FindCount(mas)); int findLine = FindLine(mas); if (findLine == -1) { Console.WriteLine("В матрице нет строк, содержащих серию одинаковых элементов"); } else { Console.WriteLine("Номер строки, в которой находится самая длинная серия одинаковых элементов " + findLine); } Console.ReadKey(); } static int[,] CreateMatrix(int n, int m) { int[,] mas = new int[n, m]; Random random = new Random(); for (int i = 0; i < mas.GetLength(0); i++) { for (int j = 0; j < mas.GetLength(1); j++) { mas[i, j] = random.Next(0, 10); } } return mas; } static void ShowMatrix(int[,] mas, string str) { Console.WriteLine(str); for (int i = 0; i < mas.GetLength(0); i++) { for (int j = 0; j < mas.GetLength(1); j++) { Console.Write(mas[i, j] + " "); } Console.WriteLine(); } Console.WriteLine(); } private static int FindCount(int[,] mas) { int count = 0; for (int i = 0; i < mas.GetLength(1); i++) { for (int j = 0; j < mas.GetLength(0); j++) { if (mas[j, i] != 0) continue; ++count; break; } } return count; } private static int FindLine(int[,] mas) { int lineNum = -1; int maxCount = 0; for (int i = 0; i < mas.GetLength(0); i++) { int count = 0; for (int j = 0; j < mas.GetLength(1) - 1; j++) { if (mas[i, j] != mas[i, j + 1]) continue; count++; } if (maxCount >= count) continue; maxCount = count; lineNum = i; } return lineNum; } } }
Решение задачи: «Матрица: определить номер строки, в которой находится самая длинная серия одинаковых элементов»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication8 { class Program { static void Main(string[] args) { Console.WriteLine("Введите размерность матрицы"); Console.Write("Число строк n = "); int n = Convert.ToInt32(Console.ReadLine()); Console.Write("Число столбцов m = "); int m = Convert.ToInt32(Console.ReadLine()); int[,] mas = CreateMatrix(n, m); int maxIndex = ShowMatrix(mas, "Исходная матрица:"); Console.WriteLine("Количество столбцов, содержащих хотя бы один нулевой элемент, равно " + FindCount(mas)); Console.WriteLine("Индекс номера строки, с самой длинной серией одинаковых элементов " + maxIndex); Console.ReadKey(); } static int[,] CreateMatrix(int n, int m) { Random random = new Random(); int[,] mas = new int[n, m]; for (int i = 0; i < mas.GetLength(0); i++) { for (int j = 0; j < mas.GetLength(1); j++) { mas[i, j] = random.Next(0, 10); } } return mas; } static int ShowMatrix(int[,] mas, string str) { int rowSum = 0; int maxSum = 0; int indexOfMax = 0; Console.WriteLine(str); for (int i = 0; i < mas.GetLength(0); i++) { rowSum = 0; for (int j = 0; j < mas.GetLength(1); j++) { Console.Write(mas[i, j] + " "); rowSum += mas[i, j]; } Console.Write(" сумма елементов: " + rowSum); if (maxSum < rowSum) { maxSum = rowSum; indexOfMax = i; } Console.WriteLine(); } Console.WriteLine(); return indexOfMax; } private static int FindCount(int[,] mas) { int count = 0; for (int i = 0; i < mas.GetLength(1); i++) { for (int j = 0; j < mas.GetLength(0); j++) { if (mas[j, i] != 0) continue; ++count; break; } } return count; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д