У меня проблемы с передачей векторов функциям. Мое беспокойство связано не с самой моей логикой, как если бы мне нужно было настроить позже. В моих требованиях к программе указано, что у меня должны быть отдельные функции, которые строят матрицы, печатают итоговую матрицу и выполняют необходимые математические операции. Меня не интересует помощь по математической логике.
Кажется, у меня есть "сложные" вещи, например, создание вектора вектора и т. Д., Но у меня возникают проблемы при передаче векторов в функции и т. Д.
#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
using std::vector;
void build();
void printMatrix(vector<vector<int> > );
int row=0, col=0;
vector<vector<int> > matrix(row, vector<int> (col) );
vector<vector<int> > matrix2(row, vector<int> (col) );
vector<vector<int> > matrix3(row, vector<int> (col) );
int main(){
build();
addMatrix();
printMatrix(matrix3);
return 0;
}
//====================================================
void build(){
//currently intended just to build 2x matrices of different increasing data
int k=0, l=5;
cout<<"Enter the number of rows for each Matrix: "<<endl;
cin>>row;
cout<<"Enter the number of columns for each Matrix: "<<endl;
cin>>col;
for( int i = 0; i < row; i++ ) {
for ( int j = 0; j < col; j++ ){
matrix[i][j] = k++;
matrix2[i][j] = l++;
}
}
Я использую глобальные переменные, потому что я хочу, чтобы строки и столбцы оставались неизменными, и в программе я смогу вызвать только одну из математических функций одновременно.
void printMatrix(vector<vector<int> > newMatrix3){
for ( int i = 0; i < row; i++ ) {
for ( int j = 0; j < col; j++ )
cout<< setw ( 3 ) << newMatrix3[i][j] <<' ';
cout<<'\n';
}
}
//=========================================
void addMatrix(){
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++)
matrix3[i][j]=(matrix[i][j]+matrix2[i][j]);
}
}
Эта программа компилируется на 100%, поэтому, если вы видите синтаксическую ошибку, это потому, что моя копия + вставка испорчена. Как только я ввожу размеры матрицы, программа вылетает из-за ошибки сегментации. Я очень новичок в C ++, так что это очень расстраивает. У меня также есть все уши, чтобы принять предложения по стилю / лучшей практике. У меня такое ощущение, что мое использование глобальных переменных не является идеальным ... но я нахожусь под инструкциями, чтобы сделать арифметические функции максимально пригодными для повторного использования. Кроме того, я не думаю, что использую функции наилучшим образом.
Спасибо.