fork download
  1. #include <stdio.h>
  2.  
  3. #define N 2
  4.  
  5.  
  6. void array_mul(int (*x_ptr)[N], int (*y_ptr)[N], int (*ans_ptr)[N]) {
  7.  
  8. for (int i = 0; i < N; i++) {
  9. for (int j = 0; j < N; j++) {
  10. ans_ptr[i][j] = 0;
  11.  
  12. for (int k = 0; k < N; k++) {
  13. ans_ptr[i][j] += x_ptr[i][k] * y_ptr[k][j];
  14. }
  15. }
  16. }
  17. }
  18.  
  19. int main(void) {
  20. // 2次元配列 x と y の定義 (2x2行列)
  21. int x[N][N] = {
  22. {1, 2},
  23. {3, 4}
  24. };
  25.  
  26. int y[N][N] = {
  27. {1, 2},
  28. {3, 4}
  29. };
  30.  
  31. int ans[N][N];
  32.  
  33.  
  34. array_mul(x, y, ans);
  35.  
  36. printf("---行列 x と y の積の結果 ---\n");
  37. for (int i = 0; i < N; i++) {
  38. for (int j = 0; j < N; j++) {
  39. printf("%4d", ans[i][j]);
  40. }
  41. printf("\n");
  42. }
  43.  
  44. return 0;
  45. }
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
---行列 x と y の積の結果 ---
   7  10
  15  22