Программа с матрицей, сравнение ее элементов по столбцу - 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));//передать его и вернуть текст

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.3 из 5
Похожие ответы