Board logo

標題: 矩陣乘法模擬 [打印本頁]

作者: 呂晉豪    時間: 2024-7-29 19:05     標題: 矩陣乘法模擬

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int a[3][2] = {
  4.                    {1, 2},
  5.                    {3, 4},
  6.                    {5, 6}
  7.               };
  8. int b[2][4] = {
  9.                    {7,  8,   9, 10},
  10.                    {11, 12, 13, 14}
  11.               };
  12. int ans[3][4];

  13. void output(int idx1, int idx2) {
  14.     int n1 = 3, m1 = 2, n2 = 2, m2 = 4;
  15.     cout << "a矩陣:" << endl;
  16.     for (int i = 0; i < n1; i++) {
  17.         for (int j = 0; j < m1; j++) {
  18.             cout << a[i][j] << "\t";
  19.         }
  20.         cout << endl;
  21.     }
  22.     cout << endl;
  23.     cout << "b矩陣:" << endl;
  24.     for (int i = 0; i < n2; i++) {
  25.         for (int j = 0; j < m2; j++) {
  26.             cout << b[i][j] << "\t";
  27.         }
  28.         cout << endl;
  29.     }
  30.     cout << endl;
  31.     cout << "ans矩陣:" << endl;
  32.     for (int i = 0; i < 3; i++) {
  33.         int flag = 1;
  34.         for (int j = 0; j < 4; j++) {
  35.             if (i == idx1 and j == idx2) {
  36.                 flag = 0;
  37.                 break;
  38.             }
  39.             cout << ans[i][j] << " ";
  40.         }
  41.         if (!flag) break;
  42.         cout << endl;
  43.     }
  44.     cout << endl;
  45.     cout << "現在要算ans[" << idx1 << "][" << idx2 << "]" << endl;
  46.     cout << "ans[" << idx1 << "][" << idx2 << "]等於:" << endl;
  47.     for (int j = 0; j < 2; j++) {
  48.         cout << a[idx1][j] << "\t";
  49.     }
  50.     cout << endl;
  51.     cout << "內積" << endl;
  52.     for (int i = 0; i < 2; i++) {
  53.         cout << b[i][idx2] << endl;
  54.     }
  55.     cout << endl;

  56.     system("pause");
  57.     system("cls");
  58. }

  59. int main()
  60. {
  61.     for (int i = 0; i < 3; i++) {
  62.         for (int j = 0; j < 4; j++) {
  63.             output(i, j);
  64.             int sum = 0;
  65.             for (int r = 0; r < 2; r++) {
  66.                 sum += a[i][r] * b[r][j];
  67.             }
  68.             ans[i][j] = sum;
  69.         }
  70.     }


  71.     for (int i = 0; i < 3; i++) {
  72.         for (int j = 0; j < 4; j++) {
  73.             cout << ans[i][j] << "\t";
  74.         }
  75.         cout << endl;
  76.     }
  77.     return 0;
  78. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/) Powered by Discuz! 7.2