fork download
  1. /*
  2.   C/C++の宿題片付けます 161代目
  3.   http://t...content-available-to-author-only...h.net/test/read.cgi/tech/1354070278/
  4.   125 名前:デフォルトの名無しさん [sage]: 2012/12/06(木) 10:12:21.78
  5.   [1] 授業単元:c言語 関数&配列
  6.   [2] 問題文 関数配列の問題です。
  7.   http://www.dotup.org/uploda/www.dotup.org3703015.pdf
  8.   [3] 環境
  9.    [3.1] OS: Linux
  10.    [3.2] コンパイラ名とバージョン: gcc
  11.    [3.3] 言語: C
  12.   [4] 期限:12/11
  13.   ポインターは使わずによろしくお願いいたします
  14.   4.
  15. */
  16. #include<stdio.h>
  17.  
  18. #define N (3) // 行, 列
  19.  
  20. void disp_matrix(double m[N][N])
  21. {
  22. int g, r;
  23. for (g = 0; g < N; g++) {
  24. printf("| ");
  25. for (r = 0; r < N; r++) {
  26. printf("%f ", m[g][r]);
  27. }
  28. printf("|\n");
  29. }
  30. }
  31.  
  32. void multmat(double mA[N][N], double mB[N][N], double mC[N][N])
  33. {
  34. int g, r, i;
  35. for (g = 0; g < N; g++) {
  36. for (r = 0; r < N; r++) {
  37. mC[g][r] = 0.0;
  38. for (i = 0; i < N; i++) {
  39. mC[g][r] += mA[g][i] * mB[i][r];
  40. }
  41. }
  42. }
  43. }
  44.  
  45. int main()
  46. {
  47. double matrix_A[N][N] = { {1.0, 0.0, 2.0}, {2.0, 1.0, 2.0}, {3.0, 2.0, 1.0} };
  48. double matrix_B[N][N] = { {1.0, 3.0, 2.0}, {2.0, 0.0, 1.0}, {1.0, 1.0, 1.0} };
  49. double matrix_C[N][N];
  50.  
  51. printf("A =\n");disp_matrix(matrix_A);
  52. printf("B =\n");disp_matrix(matrix_B);
  53. printf("C = A * B =\n");
  54. multmat(matrix_A, matrix_B, matrix_C);
  55. disp_matrix(matrix_C);
  56.  
  57. return 0;
  58. }
Success #stdin #stdout 0.01s 1720KB
stdin
Standard input is empty
stdout
A =
| 1.000000 0.000000 2.000000 |
| 2.000000 1.000000 2.000000 |
| 3.000000 2.000000 1.000000 |
B =
| 1.000000 3.000000 2.000000 |
| 2.000000 0.000000 1.000000 |
| 1.000000 1.000000 1.000000 |
C = A * B =
| 3.000000 5.000000 4.000000 |
| 6.000000 8.000000 7.000000 |
| 8.000000 10.000000 9.000000 |