Упорядочить строки матрицы по возрастанию количества одинаковых элементов в каждой строке - 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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д