从文件中读取二维数组并将其传递给另一个函数 < >我用C++写下了这个代码,从一个文件中读取一个2D数组。现在我想用函数更好地组织代码。我遇到的问题是,我不知道如何将加载到内存中的2D数组传递给同一程序中的另一个函数。 这是我需要组织成函数的代码: #include <iostream> #include <fstream> #include <string> using namespace std; #define M 4 #define N 4 int main(){ int i, j; float A[M][N]; string line; ifstream matrix("matrix.txt"); if (matrix.is_open()) { do { for(i=0; i<M; i++) { for(j=0; j<N; j++) matrix >> A[i][j]; } } while (getline(matrix,line)); matrix.close(); } else cout << "Unable to open file"; float sumline[M]={0}; for(i=0;i<M;i++) { for(j=0;j<N;j++) sumline[i]+=A[i][j]; } float sumcolumn[N]={0}; for(j=0;j<N;j++) { for(i=0;i<M;i++) sumcolumn[j]+=A[i][j]; } for (i=0; i<M; i++){ for (j=0; j<N; j++){ if(sumline[i]<sumcolumn[j]){ cout << "Error, total sum of column "<<j<<" is greater than the sum of the line"<<i<<endl; return 0; } } } int mincol=sumcolumn[0]; for (i=0; i<N; i++){ if(mincol>sumcolumn[i]) mincol==sumcolumn[i]; } float avgline = 0.0; for (i=0; i<M; i++){ avgline=avgline+sumline[i]; } avgline = avgline/M; if (avgline * 3 > mincol) { cout << "Conditions verified"<<endl; } else{ cout << "Error, triple of the avg of line is less than the lowest sum of column"<<endl; return 0; } return 0; } #包括 #包括 #包括 使用名称空间std; #定义M4 #定义n4 int main(){ int i,j; 浮动A[M][N]; 弦线; ifstream矩阵(“matrix.txt”); if(矩阵是开的()) { 做 { 对于(i=0;i A[i][j]; } } while(getline(矩阵,行)); matrix.close(); } 否则不能

从文件中读取二维数组并将其传递给另一个函数 < >我用C++写下了这个代码,从一个文件中读取一个2D数组。现在我想用函数更好地组织代码。我遇到的问题是,我不知道如何将加载到内存中的2D数组传递给同一程序中的另一个函数。 这是我需要组织成函数的代码: #include <iostream> #include <fstream> #include <string> using namespace std; #define M 4 #define N 4 int main(){ int i, j; float A[M][N]; string line; ifstream matrix("matrix.txt"); if (matrix.is_open()) { do { for(i=0; i<M; i++) { for(j=0; j<N; j++) matrix >> A[i][j]; } } while (getline(matrix,line)); matrix.close(); } else cout << "Unable to open file"; float sumline[M]={0}; for(i=0;i<M;i++) { for(j=0;j<N;j++) sumline[i]+=A[i][j]; } float sumcolumn[N]={0}; for(j=0;j<N;j++) { for(i=0;i<M;i++) sumcolumn[j]+=A[i][j]; } for (i=0; i<M; i++){ for (j=0; j<N; j++){ if(sumline[i]<sumcolumn[j]){ cout << "Error, total sum of column "<<j<<" is greater than the sum of the line"<<i<<endl; return 0; } } } int mincol=sumcolumn[0]; for (i=0; i<N; i++){ if(mincol>sumcolumn[i]) mincol==sumcolumn[i]; } float avgline = 0.0; for (i=0; i<M; i++){ avgline=avgline+sumline[i]; } avgline = avgline/M; if (avgline * 3 > mincol) { cout << "Conditions verified"<<endl; } else{ cout << "Error, triple of the avg of line is less than the lowest sum of column"<<endl; return 0; } return 0; } #包括 #包括 #包括 使用名称空间std; #定义M4 #定义n4 int main(){ int i,j; 浮动A[M][N]; 弦线; ifstream矩阵(“matrix.txt”); if(矩阵是开的()) { 做 { 对于(i=0;i A[i][j]; } } while(getline(矩阵,行)); matrix.close(); } 否则不能,c++,function,multidimensional-array,C++,Function,Multidimensional Array,而不用c数组 float A[M][N]; 您可以使用 使用MyArrayType=std::array,N>; 粘虫A型; 现在您可以通过引用传递(MyArrayType&或constmyarraytype&) 也就是说:c数组可以用更难的语法传递:(float(&a)[M][N])强烈推荐使用 STD::数组代替。似乎你想要一个A.并且作为一个提示来解决将矩阵传递给函数的问题,考虑使用而不是C样式数组。我写下来的代码是按照预期的方式工作的。我想给出我需要做的事情的全貌以及在什么方面。我正

而不用c数组

float A[M][N];
您可以使用

使用MyArrayType=std::array,N>;
粘虫A型;
现在您可以通过引用传递(
MyArrayType&
constmyarraytype&


也就是说:c数组可以用更难的语法传递:
(float(&a)[M][N])强烈推荐使用<代码> STD::数组代替。

似乎你想要一个A.并且作为一个提示来解决将矩阵传递给函数的问题,考虑使用而不是C样式数组。我写下来的代码是按照预期的方式工作的。我想给出我需要做的事情的全貌以及在什么方面。我正在研究的代码。如果我有更多的问题,我会看一下标准数组函数,然后回复你。谢谢你的回复。所以,我一直在看这个函数,它是一个用C++来处理数组的方法。但是我仍然无法回答的问题是:我正在从文件中构建2D数组,所以我是PAS。在同一个函数中唱出所有的值。现在我应该用什么样的函数
返回2D数组呢?它不能只是一个
float
函数。我唯一能想到的就是从
main()传递数组值
但我不这么认为。使用类型别名from,只需返回类型为
MyArrayType
?这样我就不需要
返回任何值,函数类型为
void
。我只需要将数组作为输入传递给其他函数,对吗?另外,定义M4而不是
E+C++方式是一个CONExPR。而不是OP的“SUBACTHORE”,如何使用标准的库函数,比如STD::累加或是这样?虽然这不是Python,但我敢打赌,代码可以更清晰地压缩到10%的大小。@ NADA是的,我真的认为它可以被优化,但是,现在,我没有太多的时间来完善我的C++知识。不幸的是,我现在正在做的工作只是收集工作的工具,不管它们是否都是有效的。现在编程不是我的强项。还有其他建议吗?@达鲁尼。我不想在C++中使用简单的数组。但是OP问如何通过2D数组。你可以通过引用或指针使用以下语法来完成:“虚函数(浮点(a))[m ] [n];“或”虚函数(浮点(*a)[m ] [n]);然后用“函数(a)”或“函数(a)”调用它。这是正确的答案。而且非常有力的建议是:在C++中永远不要使用简单数组。
using MyArrayType = std::array<std::array<float>, M>, N>;
MyArrayType A;