Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void MatrixMulplication(const MATRIXTYPE *first, const MATRIXTYPE *second, MATRIXTYPE *result, int fR, int mid, int lC){
- int sum=0,i=0,j=0,k=0,flagK,flagJ=0;
- for(k=0;k<lC;k++){
- flagK=k;
- for(i=0,sum=0; i<fR*mid ;i++){
- sum+=first[i]*second[k];
- k+=lC;
- if( (i%mid) == mid-1 ){ //first 換行
- result[j]=sum;
- if( (j%fR) == fR-1 ){
- flagJ+=1;
- j=flagJ; //result 換行
- break;
- }
- j+=lC;
- k=flagK;
- }
- }
- }
- }
- int main(){
- MATRIXTYPE *arrayFirst;
- MATRIXTYPE *arraySecond;
- MATRIXTYPE *arrayResult;
- int *firstMatrix;
- int *secondMatrix;
- int *resultMatrix;
- int i,m,n,p;
- while( scanf("%d%d%d",&m,&n,&p)==3 ){
- /*CreatMatrix*/
- int *arrayFirst=(int*)malloc(m*sizeof(int));
- for(i = 0; i < m; i++)
- arrayFirst[i]=(int)malloc(n*sizeof(int)); // Assign some value to array1[i][j]…
- firstMatrix=arrayFirst;
- int *arraySecond=(int*)malloc(n*sizeof(int));
- for(i = 0; i < n; i++)
- arraySecond[i]=(int)malloc(p*sizeof(int)); // Assign some value to array1[i][j]…
- secondMatrix=arraySecond;
- int *arrayResult=(int*)malloc(m*sizeof(int));
- for(i = 0; i < m; i++)
- arrayResult[i]=(int)malloc(p*sizeof(int)); // Assign some value to array1[i][j]…
- resultMatrix=arrayResult;
- /*inputMatrix*/
- for(i=0;i<m*n;i++){
- scanf("%d",firstMatrix[i]);
- }
- for(i=0;i<n*p;i++){
- scanf("%d",secondMatrix[i]);
- }
- /*MatrixMulplication*/
- MatrixMulplication(firstMatrix, secondMatrix, resultMatrix, m, n, p);
- /*printMatrix*/
- for(i=0;i<m*p;i++){
- printf("%d%c",resultMatrix[i],( (i%p)==p-1 ) ? '\n':' ' );
- }
- /*freeMatrix*/
- free(firstMatrix);
- free(secondMatrix);
- free(resultMatrix);
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment