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

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


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

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

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