fork download
  1. #include <stdio.h>
  2. #include <locale.h>
  3. #include <math.h>
  4. #include <stdlib.h>
  5. #include <time.h>
  6.  
  7. int ** createMatrix(unsigned int n)
  8. {
  9. int **A = malloc(n * sizeof(int*));
  10. for(unsigned int i = 0; i < n; i++)
  11. {
  12. A[i] = malloc(n * sizeof(int));
  13. }
  14. return A;
  15. }
  16.  
  17. void killMatrix(int**A, unsigned int n)
  18. {
  19. for(unsigned int i = 0; i < n; i++)
  20. {
  21. free(A[i]);
  22. }
  23. free(A);
  24. }
  25.  
  26. int** mult(int**A, int**B, unsigned int n)
  27. {
  28. int ** R = createMatrix(n);
  29. for(unsigned int i = 0; i < n; i++)
  30. for(unsigned int j = 0; j < n; j++)
  31. {
  32. R[i][j] = 0;
  33. for(unsigned int k = 0; k < n; k++)
  34. R[i][j] += A[i][k] * B[k][j];
  35. }
  36. return R;
  37. }
  38.  
  39. int** sum(int**A, int**B, unsigned int n)
  40. {
  41. int ** R = createMatrix(n);
  42. for(unsigned int i = 0; i < n; i++)
  43. for(unsigned int j = 0; j < n; j++)
  44. R[i][j] = A[i][j]+B[i][j];
  45. return R;
  46. }
  47.  
  48. void printMatrix(int** A, unsigned int n)
  49. {
  50. for(unsigned int i = 0; i < n; i++) // вывод матрицы А
  51. {
  52. for(unsigned int j = 0; j < n; j++)
  53. printf("%d\t", A[i][j]);
  54. printf("\n");
  55. }
  56. }
  57.  
  58. int main(void)
  59. {
  60. unsigned int n;
  61. srand(time(NULL));
  62. printf("Введите размер матрицы n: ");
  63. scanf("%u", &n);
  64.  
  65. int **A = createMatrix(n);
  66. int **B = createMatrix(n);
  67. int **C = createMatrix(n);
  68.  
  69. for(unsigned int i = 0; i < n; i++)
  70. for(unsigned int j = 0; j < n; j++)
  71. {
  72. A[i][j] = rand() % 10;
  73. B[i][j] = rand() % 10;
  74. C[i][j] = rand() % 10;
  75. }
  76.  
  77.  
  78. printf("\nМатрица А:\n");
  79. printMatrix(A,n);
  80.  
  81. printf("\nМатрица В:\n");
  82. printMatrix(B,n);
  83.  
  84. printf("\nМатрица С:\n");
  85. printMatrix(C,n);
  86.  
  87. int ** F = mult(C,A,n);
  88. int ** G = mult(A,C,n);
  89. int ** H = mult(G,B,n);
  90. killMatrix(G,n);
  91. G = sum(F,H,n);
  92. killMatrix(F,n);
  93. killMatrix(H,n);
  94.  
  95. printf("\nМатрица-результат:\n");
  96. printMatrix(G,n);
  97. killMatrix(G,n);
  98.  
  99.  
  100. }
  101.  
Success #stdin #stdout 0s 5504KB
stdin
5
stdout
Введите размер матрицы n: 
Матрица А:
2	6	4	0	3	
8	0	2	2	8	
5	5	2	4	6	
2	6	1	9	5	
6	5	9	0	5	

Матрица В:
6	5	2	5	5	
6	3	9	4	9	
1	9	5	6	1	
9	9	3	5	3	
1	6	0	4	1	

Матрица С:
9	5	9	0	6	
1	5	6	4	1	
7	4	8	3	0	
6	2	1	7	6	
9	1	6	4	5	

Матрица-результат:
1536	2267	1471	1673	1358	
2172	3405	1765	2648	1888	
2298	3441	1876	2597	1928	
2453	3445	1789	2533	1886	
2527	3929	2428	2996	2268