私はC++を初めて使用し、ダブルポインタを使用して2つの配列を乗算するプログラムを作成しようとしています。これまでの私のコードは次のとおりです。
#include <iostream>
using namespace std;
//multiplies two matrices A(mxl) and B(lxn) to produce C(mxn)
int m,l,n;
int **A, **B, **C;
void main(void)
{
...ユーザーはm、l、nを入力し、このようにメモリを割り当てます。
int i, j;
//creates a new mxl array
A= (int**) new int*[m];
for(i=0;i<m;i++)
{
A[i]=new int[l];
}
//creates a lxn array
B = (int**) new int*[l];
for(i=0;i<l;i++)
{
B[i]=new int[n];
}
//creates a mxn array
C = (int**) new int*[m];
for(i=0;i<n;i++)
{
C[i]=new int[n];
}
int sum = 0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
for(int k=0;k<l;k++)
{
sum =+ A[i][k]*B[k][j];
}
}
//cout<sum<<"\t";
これまでのところ、すべてが正常に機能しています。これをcout'sum'に変更すると、配列のすべての正しい要素が正しい順序で返されます。この値を配列に入れようとすると、エラーメッセージが返されます。
C[i][j]=sum;
}
}
行列を乗算するためのはるかに優れた方法があると確信していますが、この特定のコードが機能しない理由を知りたいと思っています。非常にシンプルに見え、エラーがどこから来ているのかわかりません。