Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
mazahaler
5 / 5 / 3
Регистрация: 01.10.2015
Сообщений: 304
1

Упорядочить строки матрицы по возрастанию количества одинаковых элементов в каждой строке

15.03.2017, 11:24. Просмотров 264. Ответов 4
Метки нет (Все метки)

Здравствуйте, нужна помощь.
Условие: Упорядочить строки матрицы по возрастанию количества одинаковых элементов в каждой строке. Найти номер первого из столбцов не содержащих ни одного отрицательного элемента.
Есть код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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;
        }
    }
    }
Программа упорядочивает строки не по возрастанию количества одинаковых элементов в каждой строке, а по убыванию. Помогите исправить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2017, 11:24
Ответы с готовыми решениями:

Упорядочить строки матрицы по возрастанию количества одинаковых элементов в каждой строке
Упорядочить строки целочисленной прямоугольной матрицы по возрастанию...

Упорядочить строки матрицы по возрастанию количества одинаковых элементов в каждой строке
Дана произвольная прямоугольна матрица. Нужно : - Упорядочить строки матрицы...

Упорядочить строки матрицы по возрастанию количества одинаковых элементов в каждой строке
private void Form1_Load(object sender, EventArgs e) { ...

Расположить строки заданной матрицы по возрастанию количества одинаковых элементов в каждой строке
Есть задача : Расположить строки заданной матрицы по возрастанию количества...

Упорядочить по возрастанию элементы каждой строки матрицы
Помогите еще с задачей; как упорядочить пл возрастанию элементы каждой строки...

4
Даценд
Модератор
Эксперт .NET
4200 / 3966 / 2625
Регистрация: 20.04.2015
Сообщений: 7,202
15.03.2017, 11:32 2
mazahaler,
C#
43
mlist = mlist.OrderByDescending(el => el.kol).ToList();
0
mazahaler
5 / 5 / 3
Регистрация: 01.10.2015
Сообщений: 304
15.03.2017, 11:58  [ТС] 3
можно ли сделать это не встроенной функцией, а алгоритмом?
0
Даценд
Модератор
Эксперт .NET
4200 / 3966 / 2625
Регистрация: 20.04.2015
Сообщений: 7,202
15.03.2017, 12:14 4
mazahaler,
Расскажите, что такое количество одинаковых элементов в строке?
Чему равно это количество для строк:
1 2 3 4 5 - здесь видимо 0 одинаковых
2 2 3 3 1 - сколько здесь? 2 или 4
2 2 2 1 3 - 1 или 3?
1 1 1 2 2 - 2 или 5?
1 1 1 1 1 - 1 или 5?
1
ManiKKK
1 / 1 / 0
Регистрация: 29.06.2016
Сообщений: 134
15.03.2017, 16:44 5
Цитата Сообщение от Даценд Посмотреть сообщение
2 2 3 3 1 - 2
2 2 2 1 3 - 3
1 1 1 2 2 - 3
1 1 1 1 1 - 5
Вот так
0
15.03.2017, 16:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2017, 16:44

Упорядочить по возрастанию элементы каждой строки матрицы
1. Задумано некоторое число х (х &lt; 100). Известны числа k, т, п — остатки...

Определить количество одинаковых элементов в каждой строке матрицы размерности 8 на 10
Задание: Определить количество одинаковых элементов в каждой строке матрицы...

Найти количество одинаковых элементов в каждой строке двумерной матрицы
Доброго времени суток! Надеюсь на вашу помощь:) По заданию необходимо найти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru