Упорядочить строки матрицы по возрастанию количества одинаковых элементов в каждой строке - C# (179598)
Формулировка задачи:
Здравствуйте, нужна помощь.
Условие: Упорядочить строки матрицы по возрастанию количества одинаковых элементов в каждой строке. Найти номер первого из столбцов не содержащих ни одного отрицательного элемента.
Есть код:
Программа упорядочивает строки не по возрастанию количества одинаковых элементов в каждой строке, а по убыванию. Помогите исправить.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine("Введите количество строк:"); // задаем количество строк int n = int.Parse(Console.ReadLine()); // считываем количество строк Console.WriteLine("Введите количество столбцов:"); // задаем количество столбцов int m = int.Parse(Console.ReadLine()); //считваем количество столбцов Random rnd = new Random(); // генератор случайных чисел int[,] matrix = new int[n, m]; // пустой двумерный массив размерностью n и m List<int> t = new List<int>(m); List<mylist> mlist = new List<mylist>(); int kol = 0; //количество совпадающих элементов for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) // В циклее создаем нашу матрицу случайными числами от -10 до 50 { matrix[i, j] = rnd.Next(-1, 4); Console.Write("{0}\t", matrix[i, j]); // и сразу ее выводим, так мы заполняем только строку } Console.WriteLine(); // новая строка матрицы } Console.WriteLine("\n==========================\n"); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) t.Add(matrix[i, j]); kol = t.Distinct().Count(); mlist.Add(new mylist(kol,t.ToList())); t.Clear(); } mlist = mlist.OrderBy(el => el.kol).ToList(); foreach (var item in mlist) { foreach (var i in item.list) { Console.Write(i + "\t"); } Console.WriteLine(); } Console.WriteLine("\n==========================\n"); int count = 0; // Количество элементов в стоблце for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) if (matrix[j, i] >= 0) count++; if (count == n) { Console.WriteLine("номер первого столбца, где нет отрицательных элементов {0}", ++i); break; } count = 0; } Console.ReadKey(); } } class mylist { public int kol { get; set; } public List<int> list { get; set;} public mylist(int kol, List<int> list) { this.kol = kol; this.list = list; } } }
Решение задачи: «Упорядочить строки матрицы по возрастанию количества одинаковых элементов в каждой строке»
textual
Листинг программы
mlist = mlist.OrderByDescending(el => el.kol).ToList();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д