fork(2) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. // (Ⅱ)整数値を要素にもつk 行m 列行列A とm 行n 列行列B を宣言し,それらの要素をキーボー
  4. // ドから入力してA×B を算出するプログラムを作成せよ.ただし,k,m,n はk≠m,m≠n,k≧2,
  5. // m≧2,n≧2 を満たす任意の値をプログラム内で各自設定してよい.ただし,A×B の値を画面
  6. // 表示する前に,k 行n列行列C に値を代入しておくこと.
  7.  
  8. char matName;
  9. int mode;
  10.  
  11. // prototype
  12. void input(int *a, int x, int y);
  13. void calc(int *a1, int x1, int y1, int *a2, int x2, int y2, int *c);
  14. void display(int *a, int x, int y);
  15. void clear(int *a, int x, int y);
  16.  
  17.  
  18. void calc(int *a1, int x1, int y1, int *a2, int x2, int y2, int *c)
  19. {
  20. int i, j;
  21.  
  22. for ( i = x1 * y1; i--;)
  23. for ( j = x2 * y2; j--;)
  24. if ((i % y1) == (j / y2))
  25. *(c + (i / y1) *y2 + (j % y2)) += *(a1 + i) **(a2 + j);
  26. }
  27.  
  28. void display(int *a, int x, int y)
  29. {
  30. int i;
  31. for ( i = x * y; i--;) {
  32. printf("%d ", *a++);
  33. if (i % y == 0) putchar('\n');
  34. }
  35. putchar('\n');
  36. }
  37.  
  38. void input(int *a, int x, int y)
  39. {
  40. int i, j;
  41.  
  42. for ( i = 0; i < x; ++i)
  43. for ( j = 0; j < y; ++j) {
  44. if (mode) {
  45. printf("%c[%d][%d]=", matName, i, j );
  46. scanf("%d", a++);
  47. } else {
  48. *a++ = rand() % 10;
  49. }
  50. }
  51. }
  52.  
  53. void clear(int *a, int x, int y)
  54. {
  55. int i;
  56. for ( i = x * y; i--;) *a++ = 0;
  57. }
  58.  
  59.  
  60. int main()
  61. {
  62. int k = 3, m = 2, n = 4;
  63. int A[k][m];
  64. int B[m][n];
  65. int C[k][n];
  66.  
  67. printf("0:debug 1:manual\n" );
  68. scanf("%d", &mode);
  69.  
  70. matName = 'A';
  71. input(*A, k, m);
  72. matName = 'B';
  73. input(*B, m, n);
  74.  
  75. clear(*C, k, n);
  76. calc(*A, k, m, *B, m, n, *C);
  77. display(*A, k, m);
  78. display(*B, m, n);
  79. display(*C, k, n);
  80.  
  81. return 0;
  82. }
  83.  
Success #stdin #stdout 0.02s 1680KB
stdin
Standard input is empty
stdout
0:debug  1:manual
3 6 
7 5 
3 5 

6 2 9 1 
2 7 0 9 

30 48 27 57 
52 49 63 52 
28 41 27 48