Итак, я пытаюсь создать функцию для транспонирования вектора и вывода этого вектора в консоль.
Входными данными функции являются исходный вектор, количество строк и количество столбцов.
Я знаю, что это общий вопрос, но я делаю его не так, как большинство других решений.
#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.
Любая помощь приветствуется