#include <iostream>
using namespace std;
struct matrix{
int m; // number of rows
int n; // number of columns
float **p; // pointer to 2D array
};
int main()
{
struct matrix A,B,C;
// 1. matrix A 의 사이즈 (m-by-n) 을 읽어들이고, 적당한 메모리를 동적으로 할당한후, 각각의 엔트리를 읽어들이시오.
cout <<"Type value of rows and columns of what you want to create a matrix A." <<endl;
cin >>A.m >>A.n;
A.p = new float *[A.m];
for ( int i=0; i<(A.m); i++)
{
A.p[i] = new float [A.n];
for ( int j=0; j<(A.n); j++)
{
A.p[i][j] = i+j;
cout <<A.p[i][j] <<" ";
}
cout <<endl;
}
// 2. matrix B 의 사이즈 (m-by-n) 을 읽어들이고, 적당한 메모리를 동적으로 할당한후, 각각의 엔트리를 읽어들이시오.
cout <<"Type value of rows and columns of what you want to create a matrix B." <<endl;
cin >>B.m >>B.n;
B.p = new float *[B.m];
for ( int i=0; i<(B.m); i++)
{
B.p[i] = new float [B.n];
for ( int j=0; j<(B.n); j++)
{
B.p[i][j] = i+j;
cout <<B.p[i][j] <<" ";
}
cout <<endl;
}
// 3. matrix C 의 사이즈 (m-by-n) 을 설정하고, 적당한 메모리를 동적으로 할당한후, C = A * B 를 계산하여 출력 하시오.
cout <<"matrix C is sized by rows of matrix A, and columns of matrix B." <<endl;
C.m = A.m;
C.n = B.n;
C.p = new float *[C.m];
for ( int i=0; i<(C.m); i++)
{
C.p[i] = new float [C.n];
for ( int j=0; j<(C.n); j++)
{
for ( int k=0; k<(A.n); k++)
{
C.p[i][j] = (A.p[i][k]*B.p[k][j]);
}
cout <<C.p[i][j] <<" ";
}
cout <<endl;
delete C.p[i];
}
delete C.p;
// 4. 동적으로 할당된 모든 메모리를 해제하시오.
system("pause");
return 0;
}
현재 이상태인데,
54번째줄, 그러니까 C행렬 세번째 for 구문에서
C.p[i][j] = (A.p[i][k]*B.p[k][j]); 이부분이
C.p[i][j] = C.p[i][j] + (A.p[i][k]*B.p[k][j]); 가 되어야 A,B의 곱이 되는건 알겠는데
그렇게입력하면 자꾸 쓰레기값으로 출력되네요...ㅠㅠ 무슨문제인지 알수가없어 질문합니다..