Программа с матрицей, сравнение ее элементов по столбцу - C#
Формулировка задачи:
И снова прошу помощи продвинутых программистов! Задача связанная с матрицей.
Задача:
Составить программу, находящую в матрице D(m,n) номера строк, в которых каждый элемент больше максимального из того же столбца, расположенных до рассматриваемого. Вывести исходную матрицу, номера найденных строк. Если требуемых строк нет, то выдать соответствующее сообщение.
Заранее спасибо!)
P.S. Как я понял, нужно создать матрицу, затем сравнивать элемент 1 с элементом 2 выше по столбцу. Если элемент 1 больше, то идем дальше и опять сравниваем. Если вводим количество строк 1, а столбцов 0, то типа "не с чем сравнивать". Вроде понятно, но для меня сложно реализовать, помогите пожалуйста)
Решение задачи: «Программа с матрицей, сравнение ее элементов по столбцу»
textual
Листинг программы
- private string Test(int[,] mas)
- {
- List<int> rNumber = new List<int>(); //коллекция номеров нужных строк
- int[] maxValue = new int[mas.GetLength(1)];
- string text = "";
- for (int i = 0; i < mas.GetLength(0); i++) //проверяем строки
- {
- for (int j = 0; j < mas.GetLength(1); j++) //проверяем столбцы
- {
- if (mas[i, j] > maxValue[j])
- {
- maxValue[j] = mas[i, j];
- //если значение меньше, чем максимальное значениев столбце до проверяемой строки - прерываем дальнейшую проверку этой строки
- if (j == mas.GetLength(1) - 1) rNumber.Add(i);
- }
- //если значение меньше, чем в предыдущей ячейке столбца - прерываем дальнейшую проверку этой строки
- if (mas[i, j] < maxValue[j]) break;
- }
- }
- text += "Исходная матрица:\n";
- for (int i = 0; i < mas.GetLength(0); i++) //выводим исходную матрицу
- {
- text += "Строка " + i + ": ";
- for (int j = 0; j < mas.GetLength(1); j++)
- {
- text += mas[i, j] + "\t";
- }
- text += "\n";
- }
- if (rNumber.Count() == 0) //если коллекция строк пуста - дальше не идём
- {
- return text = "Нужная строка не найдена.";
- }
- text += "Найденные строки:\n";
- for (int i = 0; i < rNumber.Count(); i++)
- {
- text += "Строка " + i + ": ";
- for (int j = 0; j < mas.GetLength(1); j++)
- {
- text += mas[rNumber[i], j] + "\t";
- }
- text += "\n";
- }
- return text;
- }
- //Использование
- int[,] mas= //создать массив;
- MessageBox.Show(Test(mas));//передать его и вернуть текст
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д