С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 08.12.2017
Сообщений: 17
.NET 4.x

Работа с матрицами

31.03.2018, 15:09. Показов 1956. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Помогите пожалуйста с заданием

Есть матрица, например:
 15
 24
 42
 51
1 5
123
132
15 
2 4
213
231
24 
312
321
4 2
42 
5 1
51 



Как сделать так, чтоб программа удалила(или заменила на нули) из это матрицы подобные строки, например:
15
и
51

123
и
132
и
231

и т.д.

Но чтоб этот код можно было применить для матриц любого размера?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.03.2018, 15:09
Ответы с готовыми решениями:

Работа с матрицами.
Дана матрица размера 5 x 10. Вывести номер ее первой|последней строки|столбца, содержащего только положительные элементы. Если таких...

Работа с матрицами
Работую пару дней с #, а задание просят сдать, помогите пожалуйста сделать эту программу на с#: Получить новую матрицу прибавлением к...

Работа с матрицами
Написал программу которая создают матрицу размером NxM и выводит на экран. К этому всему в задании нужно: Вот код с...

8
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
31.03.2018, 16:53
Afteeer, а у вас матрица представлена в виде чего? В виде строк? В виде целых чисел? Или ещё как-то?

Цитата Сообщение от Afteeer Посмотреть сообщение
Как сделать так, чтоб программа удалила(или заменила на нули) из это матрицы подобные строки, например:
15
и
51

123
и
132
и
231
Я так понял, что нужно "схлопнуть" строки, которые содержат одинаковое множество элементов, игнорируя пробелы?
Например, есть число "123", значит надо удалить строки: "123", "2 31", 13 2", "321". Так?
0
0 / 0 / 0
Регистрация: 08.12.2017
Сообщений: 17
31.03.2018, 17:26  [ТС]
Fleder, верно, если есть строки, которые содержат одинаковое множество элементов, нужно оставить только одну из них, а остальные убрать. например есть 123, нужно убрать: 321, 231, 312 и тд, а сама 123 остаётся, примерно так
0
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
31.03.2018, 17:33
Afteeer, а матрица что из себя представляет? Строки? Целые числа?
0
0 / 0 / 0
Регистрация: 08.12.2017
Сообщений: 17
31.03.2018, 18:39  [ТС]
Fleder, целые числа, такую же таблицу, как и в примере
0
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
31.03.2018, 19:42
Afteeer, если значения целых чисел в вашей "матрице" не превосходят заранее известного числа то оптимальнее всего хранить данные для каждой строки в представлении не учитывающем порядок, например, в
System.Collection.Specialized.BitVector32 и просто сравнивать при формировании нового битового вектора с уже имеющимися.
C#
1
2
3
4
5
6
7
8
9
10
11
// Сформируем тройку 5, 7, 9
BitVector32 a = new BitVector32 ();
a [5] = true;
a [7] = true;
a [9] = true;
// Сформируем тройку 9, 5, 7
BitVector32 b = new BitVector32 ();
b [9] = true;
b [5] = true;
b [7] = true;
Console.WriteLine (a.Equals(b)); // True
Предварительно строки нужно преобразовать в наборы цифр, разумеется.

Добавлено через 33 минуты
Хотя нет, BitVector32 как-то не так работает, как я полагал, так что может я и не прав.
Но нужен какой-то аналог bitset
0
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
31.03.2018, 20:41
Цитата Сообщение от Afteeer Посмотреть сообщение
Здравствуйте. Помогите пожалуйста с заданием
Есть матрица, например:
Вот пример "схлопывания" матрицы, которая представляет из себя jagged array:
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
         int[][] matrix =
         {
            new [] {0, 1, 5 },
            new [] {0, 2, 4 },
            new [] {0, 4, 2 },
            new [] {0, 5, 1 },
            new [] {1, 0, 5 },
            new [] {1, 2, 3 },
            new [] {1, 3, 2 },
            new [] {1, 5, 0 },
            new [] {2, 0, 4 },
            new [] {2, 1, 3 },
            new [] {2, 3, 1 },
            new [] {2, 4, 0 },
            new [] {3, 1, 2 },
            new [] {3, 2, 1 },
            new [] {4, 0, 2 },
            new [] {4, 2, 0 },
            new [] {5, 0, 1 },
            new [] {5, 1, 0 }
         };
 
         matrix = matrix
            .Select(x => x.OrderBy(y => y))
            .GroupBy(x => string.Join("", x))
            .Select(x => x.First().ToArray())
            .ToArray();
0
0 / 0 / 0
Регистрация: 08.12.2017
Сообщений: 17
01.04.2018, 07:31  [ТС]
Fleder, побывал сделать, как вы написали, но выдаёт ошибку: "Ошибка CS1061 'int[*,*]" не содержит определения для "Select" и не удалось найти метод расширения "Select", принимающий тип "int[*,*]" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку). "

Можно как-то преобразовать int[*,*] в int[][] без потери данных?
Или сделать подобное с int[*,*]?
0
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
01.04.2018, 08:01
Лучший ответ Сообщение было отмечено Afteeer как решение

Решение

Цитата Сообщение от Afteeer Посмотреть сообщение
Можно как-то преобразовать int[*,*] в int[][] без потери данных?
Или сделать подобное с int[*,*]?
Да, конечно же:
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
         int[,] matrix1 =
         {
            {0, 1, 5 },
            {0, 2, 4 },
            {0, 4, 2 },
            {0, 5, 1 },
            {1, 0, 5 },
            {1, 2, 3 },
            {1, 3, 2 },
            {1, 5, 0 },
            {2, 0, 4 },
            {2, 1, 3 },
            {2, 3, 1 },
            {2, 4, 0 },
            {3, 1, 2 },
            {3, 2, 1 },
            {4, 0, 2 },
            {4, 2, 0 },
            {5, 0, 1 },
            {5, 1, 0 }
         };
 
         int n = 0;
         int[][] matrix2 = matrix1
            .Cast<int>()
            .GroupBy(x => n++ / matrix1.GetLength(1))
            .Select(x => x.OrderBy(y => y))
            .GroupBy(x => string.Join("", x))
            .Select(x => x.First().ToArray())
            .ToArray();
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.04.2018, 08:01
Помогаю со студенческими работами здесь

Работа с матрицами
Ребята, уже в который раз пытаюсь довести до ума проект и всё никак не могу понять в чем проблема. Помогите кто чем может. Получаю...

Работа с матрицами
Необходимо получить распределение величины N(i) в зависимости от P(i). Это две матрицы 13х13, как написать программу, которая будет считать...

Работа с матрицами
Не могу понять где ошибка, помогите пожалуйста!!package matrix; /** * * @author kat */ public class Main { /** ...

Работа с матрицами
Здравствуйте, объясните пожалуйста как делать это задание: Через последовательный код ввести матрицы 3*3 или 4*4 и перемножить две...

Работа с матрицами
Помогите переделать программу под парный обмен (Код взял с Вашего форума). Проверить упорядочены ли элементы строк матрицы. Если нет, то...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru