Jeong-uk

multipleMatrix

Mar 23rd, 2023
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.57 KB | Source Code | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void input(int N, int M, int *Mat)
  5. {
  6.   for (int i = 0; i < N; i++)
  7.   {
  8.     for (int j = 0; j < M; j++)
  9.     {
  10.       scanf("%d", (Mat + i * M + j));
  11.     }
  12.   }
  13.   printf("\n\n");
  14. }
  15. void Array_print(int N, int M, int *Mat)
  16. {
  17.  
  18.   for (int i = 0; i < N; i++)
  19.   {
  20.     for (int j = 0; j < M; j++)
  21.     {
  22.       printf("%4d", *(Mat + i * M + j));
  23.     }
  24.     printf("\n");
  25.   }
  26.   printf("\n\n");
  27. }
  28.  
  29. int *matrixMulti(int N, int M, int L, int *A, int *B)
  30. {
  31.  
  32.   int *Mat = (int *)malloc(N * L * sizeof(int));
  33.  
  34.   for (int i = 0; i < N; i++)
  35.   {
  36.     for (int j = 0; j < L; j++)
  37.     {
  38.       *(Mat + i * M + j) = 0;
  39.       for (int k = 0; k < M; k++)
  40.       {
  41.         *(Mat + i * M + j) += A[i * M + k] * B[k * M + j];
  42.       }
  43.       printf("Mat[%d][%d] Mat[i][j] %d Mat address : %p \n", i, j, *(Mat + i * M + j), Mat);
  44.       printf("\n");
  45.     }
  46.   }
  47.  
  48.   return Mat;
  49. }
  50.  
  51. int main()
  52. {
  53.   int N, M, L;
  54.   printf("input N M L\n      ");
  55.   scanf("%d %d %d", &N, &M, &L);
  56.  
  57.   int *A = (int *)malloc(N * M * sizeof(int));
  58.   int *B = (int *)malloc(L * M * sizeof(int));
  59.   int *S = (int *)malloc(N * L * sizeof(int));
  60.  
  61.   input(N, M, A);
  62.   Array_print(N, M, A);
  63.  
  64.   input(M, L, B);
  65.   Array_print(M, L, B);
  66.  
  67.   S = matrixMulti(N, M, L, A, B);
  68.  
  69.   printf("\n S address %p\n", matrixMulti(N, M, L, A, B)); ////////////////////////// ---> A
  70.   printf("\n S address %p\n", S);                          ////////////////////////// ---> A-30
  71.  
  72.   // Array_print(N, L, matrixMulti(N, M, L, A, B));
  73.  
  74.   free(A);
  75.   free(B);
  76.   free(S);
  77.   return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment