テストする次のコードを書きましたint main()
int main() {
int *p1 = findmatrixsize("inputmatrix.txt","A");//A function gets matrix size
cout << p1[0] << endl << p1[1] << endl;
int *p2 = findmatrixsize("inputmatrix.txt","B");
cout << p2[0] << endl << p2[1] << endl;
double **C = normalmultiplication("inputmatrix.txt","A", "B");
cout << C[0][0] << endl;
ofstream fout;
const string s="outputmatrix.txt";
fout.open(s);
for(int i=0;i<p1[0];i++){
for(int j =0;j<p2[1];j++){
fout << C[i][j] << " ";
}
fout<< endl;
}
fout.close();
return 0;
}
マルチアレイ印刷を実行しているときを除いて、すべてが機能します。問題は次のとおりです。
1.印刷部分をコメントアウトすると、p1[0],p1[1],p2[0],p2[1],C[i][j]
完璧で正しい結果が得られます。
2.ただし、通常のループを使用して印刷すると機能しません。しかし、しかし、しかし、p1[0],p2[1]
for ループ内を 3 のような具体的な数値に変更すると (行列の次元が 3 の場合)、再び機能します。
3.コンパイルはするが、forループ印刷部分がtxtに書かれていない。標準のprint cout(1行だけでなく、メソッド全体を意味します)に変更したところ、端末にも表示されませんでした。しかし、上で述べたように、p[0] p[1] を 3 に変更すると機能します。つまり、txt またはターミナルでそれらを見ることができます。
これまで C++ でこのような奇妙な状況に遭遇したことがないので、誰かが私を助けてくれることを願っています!
参考までに、コンパイラとして Visual Studio 2010 を使用しています。
ご協力いただきありがとうございます!