#include <iostream>
using namespace std;
void matrix (double **A, int n, int m, int z, double **B, double **C) {
double p = 0;
for (int i = 0; i < n; i++) {
for (int j = 0 ; j < z; j++) {
for(int k = 0; k < m; k++) {
p += A[i][k]*B[k][j];
}
C[i][j] = p;
p = 0;
cout << C[i][j] << " ";
}
cout << endl;
}
}
int main() {
int n, m, w, z;
cin >> n; // кол-во строк в матрице А
cin >> m; // кол-во столбцов в матрице А
cin >> w; // кол-во строк в матрице В
cin >> z; // кол-во столбцов в матрице А
if (m==w) {
double **A = new double* [n];
for (int i = 0; i < n; i++)
{
A[i] = new double [m];
}
cout << "матрица А:" << endl;
for (int i = 0; i < n; i++) {
for (int j = 0 ; j < m; j++){
cin >> A[i][j];
cout << A[i][j] << " ";
}
cout << endl;
}
double **B = new double* [w];
for (int i = 0; i < w; i++)
{
B[i] = new double [z];
}
cout << "матрица B:" << endl;
for (int i = 0; i < w; i++){
for (int j = 0 ; j < z ; j++){
cin >> B[i][j];
cout << B[i][j] << " ";
}
cout << endl;
}
double **C = new double* [n];
for (int i = 0; i < n; i++)
{
C[i] = new double [z];
}
cout << "Произведение матриц:" << endl;
matrix(A, n, m, z, B, C);
}
else {
cout << "Перемножить данные матрицы невозможно" << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgogICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogCiAgICB2b2lkIG1hdHJpeCAoZG91YmxlICoqQSwgaW50IG4sIGludCBtLCBpbnQgeiwgZG91YmxlICoqQiwgZG91YmxlICoqQykgewogICAgZG91YmxlIHAgPSAwOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAJICAgIGZvciAoaW50IGogPSAwIDsgaiA8IHo7IGorKykgewogICAgICAgCSAgICAJZm9yKGludCBrID0gMDsgayA8IG07IGsrKykgewogICAgICAgICAgICAgICAgICAgIHAgKz0gQVtpXVtrXSpCW2tdW2pdOwogICAgICAgICAgICAgIAl9CiAgICAgICAgICAgICAgICAgICAgQ1tpXVtqXSA9IHA7CiAgICAgICAgICAgICAgICAgICAgcCA9IDA7CiAgICAgICAgICAgICAgICAgICAgY291dCA8PCBDW2ldW2pdIDw8ICIgICI7CiAgICAgICAgICAgCSAgCX0gICAgCiAgICAgICAgICAgIGNvdXQgPDwgZW5kbDsKICAgICAgICAgICAgfQkKICAgICAgICB9CiAKIAogICAgaW50IG1haW4oKSB7CiAgICAgICAgaW50IG4sIG0sIHcsIHo7CiAKICAgICAgICAgICAgY2luID4+IG47IC8vINC60L7Quy3QstC+INGB0YLRgNC+0Log0LIg0LzQsNGC0YDQuNGG0LUg0JAKICAgICAgICAgICAgY2luID4+IG07IC8vINC60L7Quy3QstC+INGB0YLQvtC70LHRhtC+0LIg0LIg0LzQsNGC0YDQuNGG0LUg0JAKICAgICAgICAgICAgY2luID4+IHc7IC8vINC60L7Quy3QstC+INGB0YLRgNC+0Log0LIg0LzQsNGC0YDQuNGG0LUg0JIKICAgICAgICAgICAgY2luID4+IHo7IC8vINC60L7Quy3QstC+INGB0YLQvtC70LHRhtC+0LIg0LIg0LzQsNGC0YDQuNGG0LUg0JAKIAogICAgICAgIGlmIChtPT13KSB7CiAKICAgIGRvdWJsZSAqKkEgPSBuZXcgZG91YmxlKiBbbl07CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgewogICAgICAgICAgICBBW2ldID0gbmV3IGRvdWJsZSBbbV07CiAgICAgICAgfQogCiAgICAgICBjb3V0IDw8ICLQvNCw0YLRgNC40YbQsCDQkDoiIDw8IGVuZGw7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7ICAgICAgICAgCiAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMCA7IGogPCBtOyBqKyspewogICAgICAgICAgICAgICAgICAgIGNpbiA+PiBBW2ldW2pdOwogICAgICAgICAgICAgICAgICAgIGNvdXQgPDwgQVtpXVtqXSA8PCAiICAiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY291dCA8PCBlbmRsOwogICAgICAgICAgICB9CiAKICAgICBkb3VibGUgKipCID0gbmV3IGRvdWJsZSogW3ddOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdzsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgQltpXSA9IG5ldyBkb3VibGUgW3pdOwogICAgICAgIH0gICAgCiAKICAgICAgICBjb3V0IDw8ICLQvNCw0YLRgNC40YbQsCBCOiIgPDwgZW5kbDsKICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB3OyBpKyspeyAgICAgICAgICAKICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwIDsgaiA8IHogOyBqKyspewogICAgICAgICAgICAgICAgICAgIGNpbiA+PiBCW2ldW2pdOwogICAgICAgICAgICAgICAgICAgIGNvdXQgPDwgQltpXVtqXSA8PCAiICAiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY291dCA8PCBlbmRsOwogICAgICAgICAgICB9CiAKICAgICAgZG91YmxlICoqQyA9IG5ldyBkb3VibGUqIFtuXTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIENbaV0gPSBuZXcgZG91YmxlIFt6XTsKICAgICAgICB9CiAKICAgICAgICAgICBjb3V0IDw8ICLQn9GA0L7QuNC30LLQtdC00LXQvdC40LUg0LzQsNGC0YDQuNGGOiIgPDwgZW5kbDsKICAgICAgICAgICBtYXRyaXgoQSwgbiwgbSwgeiwgQiwgQyk7CiAKICAgICAgICAgICAgICAgIH0KIAogICAgICAgIGVsc2UgewogICAgICAgICAgCWNvdXQgPDwgItCf0LXRgNC10LzQvdC+0LbQuNGC0Ywg0LTQsNC90L3Ri9C1INC80LDRgtGA0LjRhtGLINC90LXQstC+0LfQvNC+0LbQvdC+IiA8PCBlbmRsOwogICAgICAgIH0KIAogICAgICAgcmV0dXJuIDA7ICAgIAogICAgfQ==