Транспонирование двумерного вектора с использованием одного уравнения и цикла для вычисления всех целых чисел - PullRequest
0 голосов
/ 29 октября 2019

Итак, я пытаюсь создать функцию для транспонирования вектора и вывода этого вектора в консоль.

Входными данными функции являются исходный вектор, количество строк и количество столбцов.

Я знаю, что это общий вопрос, но я делаю его не так, как большинство других решений.

#include <iostream>
#include <vector>

using namespace std;

void transpose(vector<int>& m, int& nRows, int& nCols) {

    int w = nRows;
    nRows = nCols; //=5
    nCols = w; //=3

    vector<int>& x;

    for (int i = 0; i < nCols * nRows; i++) {

        if (i == 0) {
            x[0] = m[1];

            continue;
        }
        else if (i != 0) {

            x[i] = m[(1/nCols) + x.size() / nCols];
            nRows++;
            if (nRows = )

                if (i == 14) {}
        }
    }
}

int main() {

    int nRows = 3;
    int nCols = 5;

    vector<int> m = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14 };

    cout << transpose(m) << endl;
    cout << "Rows = " << nRows << endl;
    cout << "Columns = " << nCols;

    return 0;
}

Код не закончен и определенно не работает. Если вы посмотрите на основной цикл for, вы увидите, что код читает каждое целое число в векторе один за другим и немедленно передает эту информацию во второй вектор, который будет выходным вектором.

//x[0]  x[1]  x[2]          0 5 10              x[0]  x[1]  x[2]  x[3] x[4]
//x[3]  x[4]  x[5]          1 6 11              x[5]  x[6]  x[7]  x[8]  x[9]
//x[6]  x[7]  x[8]          2 7 12              x[10] x[11] x[12] x[13] x[14]
//x[9]  x[10] x[11]         3 8 13
//x[12] x[13] x[14]         4 9 14

Слева транспонированный вектор, справа исходный вектор. Для простоты я назначил 0,1,2 .. в качестве фактических значений в векторе.

То, что происходит в каждом столбце, является довольно простым уравнением.

1/3*x

1/3*x + 14/3

1/3*x + 28/3

То, что я пытаюсь сделать, это сказать

x[i] = ((vectorposition-1)/nCols) + m.size()*"something" /nCols

Чтобы каждый столбец не нуждался в собственном цикле for.

Любая помощь приветствуется

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...