Guest User

Untitled

a guest
May 27th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <assert.h>
  4.  
  5. /* Prototypes */
  6. int **mm(int **a, int **b, int l, int m, int n);
  7. int **init_array(int **array, int row, int col);
  8. void print_ar(int **array, int row, int col);
  9.  
  10. /* Computation step */
  11. int **mm(int **a, int **b, int l, int m, int n)
  12. {
  13. int i,j,k;
  14. int **c;
  15.  
  16. for (i = 0; i < l-1; i++) {
  17. for (j = 0; j < n-1; j++) {
  18. c[i][j] = 0;
  19. for (k = 0; k < m-1; k++) {
  20. c[i][j] += a[i][k] * b[k][j];
  21. }
  22. }
  23. }
  24. return c;
  25. }
  26.  
  27.  
  28. void print_ar(int **array, int row, int col)
  29. {
  30. int i,j;
  31. for (i = 0; i < row; i++) {
  32. for (j = 0; j < col; j++) {
  33. printf(" %d", array[i][j]);
  34. }
  35. printf("\n");
  36. }
  37. printf("\n");
  38. }
  39.  
  40. int **init_array(int **array, int row, int col)
  41. {
  42. int i,j;
  43. for (i = 0; i < row; i++) {
  44. for (j = 0; j < col; j++) {
  45. array[i][j] = (col) + (row % 2); //+ rand();
  46. }
  47. }
  48. return array;
  49. }
  50.  
  51. int main(int argc, char *argv[])
  52. {
  53. int **a, **b, **ret;
  54. int i, l, m, n;
  55. l = 2;
  56. m = 3;
  57. n = 4;
  58.  
  59. assert((a = malloc(l * sizeof(double *))) != NULL);
  60. assert((b = malloc(m * sizeof(double *))) != NULL);
  61. for (i = 0; i < m; i++)
  62. assert((a[i] = malloc(m * sizeof(double))) != NULL);
  63. for (i = 0; i < n; i++)
  64. assert((b[i] = malloc(n * sizeof(double))) != NULL);
  65.  
  66. a = init_array(a,l,m);
  67. b = init_array(b,m,n);
  68. print_ar(a,l,m);
  69. print_ar(b,m,n);
  70. ret = mm(a,b,l,m,n);
  71. print_ar(ret,l,n);
  72.  
  73. return 0;
  74. }
Add Comment
Please, Sign In to add comment