Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 июл 2021, 06:39

Получить транспонированную матрицу

Автор Yamuna, 16 ноя 2020, 09:52

0 Пользователей и 1 гость просматривают эту тему.

Yamuna

добрый день! подскажите как получить транспонированную Матрицу: Сделать матрицу случайных чисел 5 x 5. Вывести пользователю. Получить по исходной матрице транспонированную матрицу. Вывести пользователю.


Генератор = Новый ГенераторСлучайныхЧисел();
Матрица = Новый Массив(5,5);
Для Инд = 0 по Матрица.ВГраница() Цикл
Для ИндКол = 0 По Матрица[Инд].ВГраница() Цикл
Матрица[Инд][ИндКол] = Генератор.СлучайноеЧисло(1,100);
КонецЦикла;
КонецЦикла;

Для каждого СтрМасс Из Матрица Цикл
Сообщить("Матрица "+СтрМасс[0]+" "+СтрМасс[1]+" "+СтрМасс[2]+" "+СтрМасс[3]+" "+СтрМасс[4]);
КонецЦикла;

НовМатрица = Новый Массив;
Для Стр = 0 По Матрица.Количество() - 1 Цикл
Для Значение = 0 По Матрица[Стр].Количество() - 1 Цикл
Для Сч = 1 По Значение Цикл
НовСтр = Сред(Стр,Сч,1) + НовСтр;
КонецЦикла;                                                     
НовМатрица.Добавить(НовСтр);
НовСтр = "";
КонецЦикла;
КонецЦикла;



не пойму что не так делаю ?

LexaK

попробуйте так

//размерность массива, можно оперативно менять
нн = 5;
мм = 4;
Генератор = 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] + ", ";
        КонецЦикла;
        Сообщить(Значения);
    КонецЦикла;

ответ Понравился? (в смысле пригодился?)

Yamuna

Цитата: LexaK от 16 ноя 2020, 11:02
попробуйте так

//размерность массива, можно оперативно менять
нн = 5;
мм = 4;
Генератор = 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] + ", ";
        КонецЦикла;
        Сообщить(Значения);
    КонецЦикла;



Большое спасибо! так у Вас все классно получается...

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск