【发布时间】:2011-09-14 21:33:40
【问题描述】:
我在将向量传递给函数时遇到了一些问题。我关心的不是我的逻辑本身,好像我以后需要调整一样。我的程序要求规定我必须有单独的函数来构建矩阵、打印最终矩阵以及执行所需数学运算的函数。我不关心数学逻辑的帮助。
似乎我有“硬”的东西,例如,创建一个向量的向量等,但我无法将向量传递给函数等。
#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++ 新手,所以这非常令人沮丧。我也很乐意听取有关风格/最佳实践的建议。我觉得我对全局变量的使用并不理想……但我正在接受指示,以使算术函数尽可能地可重用。另外,我认为我没有充分利用功能。
谢谢。
【问题讨论】:
-
看起来像家庭作业,不;)
-
这是家庭作业,直到我发表第一篇文章后,我才知道“家庭作业”标签。我在向量初始化方面遇到了一个真正的问题,但这不是我的家庭作业的一部分。