Транспонирование и умножение массивов

Franta123456 спросил: 28 марта 2018 в 04:26 в: c++

Я использую Arduino DUE, и я пытаюсь найти способ транспонирования массива.

Например, если у меня есть этот массив:

int A[5] ={1, 2, 3,4,5};

Это в основном массив с 1 строкой и 5 столбцами. После transpose это должно быть 5 строк по 1 столбцу.

Знаете ли вы, как это сделать без использования какой-либо библиотеки?

2 ответа

Есть решение
Aconcagua FLASH ответил: 28 марта 2018 в 05:03

Предположим, что если у вас есть двумерный массив порядка (m x n), то создайте новый массив порядка (n x m). Это можно сделать, используя вложенный цикл для итерации массива порядка (nxm) и копирования элементов массива порядка (mxn), поэтому все, что вам нужно сделать, это --- >

a [m] [n] ----- > Исходный массив (входной) b [n] [m] ----- > Новый обязательный массив (output-Transpose)

for(int i=0;i<n;i++)
{
    for(int j=0;j<m;j++)
    {
        b[i][j]=a[j][i];
    }
}

Таким образом, это дает вам обязательный массив b [n] [m], который является транспонированным для a.

Aconcagua ответил: 28 марта 2018 в 05:03
Вы не можете использовать форматирование в разделах кода ... Найдите другой способ выделить важные отрывки.
spurdosparde ответил: 28 марта 2018 в 05:12

Я понимаю ваш вопрос, но, по-моему, у вас неправильное представление о том, что такое массив: массив - это не одна строка с несколькими столбцами или столбец с несколькими строками, это просто последовательность сохраненных значений в памяти.

Это означает, что массив массива не имеет определенной формы, обычно кодер формирует его, поэтому вы можете использовать его в качестве матрицы 1x5 или 5x1 в зависимости от способа итерации по нему. .