Advertisement
wojtas626

[C] Matrix Multiplication

Dec 4th, 2014
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.23 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. void print(double x[], int a, int b)
  6. {
  7.     int i, j;
  8.     for(i = 0; i < a; i++)
  9.     {
  10.         for(j = 0; j < b; j++)
  11.         {
  12.             printf("%lf ", x[i * b + j]);
  13.         }
  14.         printf("\n");
  15.     }
  16.  
  17. }
  18.  
  19. void matrixMultiplication(double x[], double y[], double z[], int a, int b, int c)
  20. {
  21.     int i, j, k, l;
  22.     for(i = 0; i < a; i++)
  23.     {
  24.         for(j = 0; j < c; j++)
  25.         {
  26.             int tmp = 0;
  27.             for(k = 0; k < b; k++)
  28.             {
  29.                 tmp += x[i * b + k] * y[k * a + j];
  30.             }
  31.  
  32.             z[i * c + j] = tmp;
  33.         }
  34.     }
  35. }
  36.  
  37. int main()
  38. {
  39.     int m = 2, n = 3, p = 4;
  40.     double a[m][n], b[n][p], c[m][p];
  41.  
  42.     srand(time(NULL));
  43.  
  44.     int i, j;
  45.     for(i = 0; i < m; i++)
  46.     {
  47.         for(j = 0; j < n; j++)
  48.         {
  49.             a[i][j] = rand() % 100;
  50.         }
  51.     }
  52.     for(i = 0; i < n; i++)
  53.     {
  54.         for(j = 0; j < p; j++)
  55.         {
  56.             b[i][j] = rand() % 50;
  57.         }
  58.     }
  59.  
  60.     print(*a, m, n);
  61.     printf("\n");
  62.     print(*b, n, p);
  63.     printf("\n");
  64.  
  65.     matrixMultiplication(a, b, c, m, n, p);
  66.  
  67.     print(*c, m, p);
  68.     printf("\n");
  69.  
  70.     return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement