Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "string.h"
- #include "array.h"
- using namespace std;
- Array<Array<double>> transpose(const Array<Array<double>>& A)
- {
- int m = A.size();
- int n = A[0].size();
- // создадим (n x m)
- Array<Array<double>> AT;
- for(int j = 0; j < n; j++)
- {
- Array<double> row;
- for(int i = 0; i < m; i++)
- {
- row.append(A[i][j]);
- }
- AT.append(row);
- }
- return AT;
- }
- Array<Array<double>> multiplyMatrix(const Array<Array<double>>& A, const Array<Array<double>>& B)
- {
- int m = A.size();
- int n = A[0].size();
- int p = B[0].size();
- Array<Array<double>> C;
- // Инициализируем (m x p) нулями
- for(int i = 0; i < m; i++)
- {
- Array<double> rowC;
- for(int j = 0; j < p; j++)
- {
- rowC.append(0.0);
- }
- C.append(rowC);
- }
- for(int i = 0; i < m; i++)
- {
- for(int j = 0; j < p; j++)
- {
- double sum = 0.0;
- for(int k = 0; k < n; k++)
- {
- sum += A[i][k] * B[k][j];
- }
- C[i][j] = sum;
- }
- }
- return C;
- }
- int main()
- {
- // Считываем A
- int m, n;
- cin >> m >> n;
- Array<Array<double>> A;
- for(int i = 0; i < m; i++)
- {
- Array<double> row;
- for(int j = 0; j < n; j++)
- {
- double val;
- cin >> val;
- row.append(val);
- }
- A.append(row);
- }
- // Транспонируем
- auto AT = transpose(A);
- cout << "A^T:\n";
- for(int i = 0; i < AT.size(); i++)
- {
- for(int j = 0; j < AT[i].size(); j++)
- {
- cout << AT[i][j] << " ";
- }
- cout << endl;
- }
- // Считываем B (n x p)
- int p;
- cin >> p;
- Array<Array<double>> B;
- for(int i = 0; i < n; i++)
- {
- Array<double> rowB;
- for(int j = 0; j < p; j++)
- {
- double val;
- cin >> val;
- rowB.append(val);
- }
- B.append(rowB);
- }
- auto C = multiplyMatrix(A, B);
- cout << "A x B:\n";
- for(int i = 0; i < C.size(); i++)
- {
- for(int j = 0; j < C[i].size(); j++)
- {
- cout << C[i][j] << " ";
- }
- cout << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement