|
Получить транспонированную матрицу | ☑ | ||
---|---|---|---|---|
0
YamEgor
16.11.20
✎
10:00
|
добрый день! подскажите как получить транспонированную Матрицу: Сделать матрицу случайных чисел 5 x 5. Вывести пользователю. Получить по исходной матрице транспонированную матрицу. Вывести пользователю.
Генератор = Новый ГенераторСлучайныхЧисел(); Матрица = Новый Массив(5,5); Для Инд = 0 по Матрица.ВГраница() Цикл Для ИндКол = 0 По Матрица[Инд].ВГраница() Цикл Матрица[Инд][ИндКол] = Генератор.СлучайноеЧисло(1,100); КонецЦикла; КонецЦикла; Для каждого СтрМасс Из Матрица Цикл Сообщить("Матрица "+СтрМасс[0]+" "+СтрМасс[1]+" "+СтрМасс[2]+" "+СтрМасс[3]+" "+СтрМасс[4]); КонецЦикла; НовМатрица = Новый Массив; Для Стр = 0 По Матрица.Количество() - 1 Цикл Для Значение = 0 По Матрица[Стр].Количество() - 1 Цикл Для Сч = 1 По Значение Цикл НовСтр = Сред(Стр,Сч,1) + НовСтр; КонецЦикла; НовМатрица.Добавить(НовСтр); НовСтр = ""; КонецЦикла; КонецЦикла; не пойму почему не получается? |
|||
1
YamEgor
16.11.20
✎
10:46
|
транспонированная матрица - это когда строки матрицы становятся столбцами
|
|||
2
YamEgor
16.11.20
✎
11:08
|
каждая строка у матрицы это массив из 5 элемнтов, и теперь каждый элемент в строке нужно поместить в новый массив и это сделать с каждой строкой, и потом 5 новых массивов добавить как строки новой транспонированной матрицы. Кто то может помочь это сделать?
|
|||
3
Mikeware
16.11.20
✎
11:24
|
(2) а зачем _нам_ это?
|
|||
4
D_E_S_131
16.11.20
✎
11:28
|
НовМатрица = Новый Массив ?? (5,5);// так же наверное должно быть?
НовМатрица.Добавить(НовСтр);// а раньше было "Матрица[Инд][ИндКол] = Генератор.СлучайноеЧисло(1,100);" - почему так же не использовать? |
|||
5
D_E_S_131
16.11.20
✎
11:29
|
И еще, может не правильно понял написанный текст, но ИМХО (1) не сходится с (2).
|
|||
6
YamEgor
16.11.20
✎
11:39
|
(5) немного запарился я уже, плохо голова соображает..
|
|||
7
YamEgor
16.11.20
✎
11:40
|
(3) это на собеседовании задали решить.
|
|||
8
fisher
16.11.20
✎
11:45
|
(6) Отладчик? Бумажка с ручкой?
|
|||
9
YamEgor
16.11.20
✎
11:49
|
(5) Транспонирование матрицы - это операция над матрицей, когда ее строки становятся столбцами с теми же номерами. пояснения с сайта Webmath.ru
|
|||
10
HawkEye
16.11.20
✎
11:53
|
(7) зарплатой тоже будешь делиться? )))
|
|||
11
Креатив
16.11.20
✎
11:55
|
(0)В олдскульных языках программирования это делалось при помощи двух вложенных циклов.
для i = 1 по n цикл для j = 1 по n цикл н[i, j] = c[j, i] конеццикла конеццикла |
|||
12
fisher
16.11.20
✎
11:56
|
Это элементарная ТРЕНИРОВОЧНАЯ задачка. Можно попросить кого-то сделать вместо тебя утреннюю зарядку, но польза от этого будет весьма сомнительная для тебя.
|
|||
13
Василий Алибабаевич
16.11.20
✎
11:56
|
(11) Для этого теорию алгоритмов учить нужно было. А не так как сейчас - гугление наше фсьо.
|
|||
14
ДенисЧ
16.11.20
✎
11:57
|
(13) ТКВ
|
|||
15
Irbis
16.11.20
✎
11:58
|
(11) А без второй матрицы? Нам за такое конечности могли клавиатурой поотбивать.
|
|||
16
Василий Алибабаевич
16.11.20
✎
12:00
|
(14) ТК ответ: Совсем недавно студенту 4-го курса писал алгоритмы поиска в массивах МИН, МАКС, частичной суммы. Буквально на прошлой неделе. Теория алгоритмов у них была во втором семестре 1-го курса. Сессию сдали и пипетц. Забыли все.
|
|||
17
Ботаник Гарден Меран
16.11.20
✎
12:01
|
Таблицу в источник данных в СКД.
В настройках структуры таблицу, в которой строки - колонки, а колонки - строки. На выходе - транспонированная таблица. |
|||
18
YamEgor
16.11.20
✎
12:05
|
(12) так я же и стараюсь разобраться..
|
|||
19
Василий Алибабаевич
16.11.20
✎
12:07
|
(17) Можно еще выгрузить в SQL оттуда экспортировать в XML, а потом уже его и разбирать.
|
|||
20
Mikeware
16.11.20
✎
12:10
|
(16) "теорию алгоритмов проходили на втором семестре и мимо"
|
|||
21
Mikeware
16.11.20
✎
12:11
|
(19) можно нанять индуса, отправлять ему электронкой и получать обратно уже транспонированную
|
|||
22
acht
16.11.20
✎
12:15
|
(18) [Голосом Дроздова]
- А мы с вами пока проследим за рождением нового Ливингстара. Вот он выбрался из обломков своей скорлупы и сушит на солнце свой пушок... |
|||
23
fisher
16.11.20
✎
12:15
|
(18) Нет. Ты пришел за решением. От готового решения такой простой задачи со стороны тебе будет больше вреда чем пользы. Родив его сам - ты запомнишь навсегда.
|
|||
24
Mikeware
16.11.20
✎
12:20
|
(22) :-)))
Дроздов не говорит, где у них гнездо? |
|||
25
YamEgor
16.11.20
✎
12:24
|
(23)
ну тогда вот это наверно подойдет? //размерность массива, можно оперативно менять нн = 5; мм = 5; Генератор = 0;//для простоты проверки Матрица = Новый Массив(нн,мм);//(5,4); Для поз1 = 0 по нн - 1 Цикл Для поз2 = 0 По мм - 1 Цикл Генератор = Генератор + 1; Матрица[поз1][поз2] = Генератор;//.СлучайноеЧисло(1,100); КонецЦикла; КонецЦикла; Сообщить("Исходный массив:"); Для поз1 = 0 по нн - 1 Цикл Значения = ""; Для поз2 = 0 По мм - 1 Цикл Значения = Значения + Матрица[поз1][поз2] + ", "; КонецЦикла; Сообщить(Значения); КонецЦикла; НовМатрица =Новый Массив(нн, мм);//(4,5); Для поз1 = 0 по нн - 1 Цикл Для поз2 = 0 По мм - 1 Цикл НовМатрица[поз2][поз1] = Матрица[поз1][поз2]; КонецЦикла; КонецЦикла; //вывод матрицы 2 Сообщить("транспонированный массив:"); Для поз1 = 0 по нн - 1 Цикл Значения = ""; Для поз2 = 0 По мм - 1 Цикл Значения = Значения + НовМатрица[поз1][поз2] + ", "; КонецЦикла; Сообщить(Значения); КонецЦикла; (11) большое спасибо за помощь да мне уже 60 лет вот изучаю 1С ...Сори |
|||
26
Irbis
16.11.20
✎
12:29
|
(24) Хочешь добавить ещё один в Чёрную книгу?
|
|||
27
Irbis
16.11.20
✎
12:32
|
(25) Для квадратной матрицы, хоть и не оптимально (главная диагональ переставляется, чего можно не делать), прокатит а для произвольной >>НовМатрица =Новый Массив(нн, мм)//(4,5); индексы местами не поменял.
|
|||
28
YamEgor
16.11.20
✎
12:43
|
(27) да я уже потом увидел спасибо
|
|||
29
Креатив
16.11.20
✎
13:59
|
(15)Очень часто исходная матрица тоже нужна. А транспонирование внутри матрицы - задача ненамного сложней.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |