#include <iostream>
#include <iomanip>
using namespace std;
//фуникция выделения памяти для матриц
int **MatCreate(int stroki,int stolbci){
int **mat = new int * [stroki];
for (int i = 0; i < stroki; ++i){
mat[i] = new int [stolbci];}
return mat;};
//функция заполнения матриц
void MatIn(int stroki,int stolbci,int **mat){
for (int i = 0; i < stroki; ++i){
for (int j = 0; j < stolbci; ++j){
cin >> mat[i][j];}}
};
//функция обнуления значений в матрице произведения
void ObnulatorSum(int **mat3,int strokimat1, int stolbcimat2){
for (int i = 0; i < strokimat1; ++i){
for (int j = 0; j < stolbcimat2; ++j){
mat3[i][j] = 0;
}}
}
//функция подсчета матрицы произведения
void MatUm(int **mat1,int **mat2,int **mat3,int a,int d,int b){
for (int i = 0; i < a; ++i)
for (int n = 0; n < d; ++n)
for (int j = 0; j < b; ++j)
mat3[i][n] += mat1[i][j] * mat2[j][n];
}
//функция выводящая значения матриц
void matprint(int **mat, int strokimat, int stolbcimat){
for (int i = 0; i < strokimat; ++i){
for (int n = 0; n < stolbcimat; ++n){
cout << setw(3) <<mat[i][n];
}
cout<<endl;
}
};
//функция освобождения памяти
void matdelete(int **mat, int stroki){
for (int i = 0; i < stroki; ++i) {
delete [] mat[i];
}
delete [] mat;
}
int main() {
int a ,b ,c ,d;
int **mat1,**mat2,**mat3;
cin >> a >> b >> c >> d;//ввод строк и столбцов первой и второй матрицы
if (b == c){
mat1 = MatCreate(a,b);
mat2 = MatCreate(c,d);
mat3 = MatCreate(a,d);
MatIn(a,b,mat1);
cout << "матрица №1"<<endl ;
matprint(mat1,a,b);
MatIn(c,d,mat2);
cout << "матрица №2"<<endl ;
matprint(mat2,c,d);
ObnulatorSum(mat3,a,d);
cout << "матрица №3"<<endl ;
matprint(mat3,a,d);
cout << "матрица произведения: "<< a <<" x "<<d <<endl;
MatUm(mat1, mat2, mat3, a,d,b); /*я не могу объяснить феномен почему у меня матрица
считается нормально а выводиться ненормально */
matprint(mat3,a,d);
matdelete(mat1,a);
matdelete(mat2,c);
matdelete(mat3,a);
}
else{
cout << " матрицы не совместимы " << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovL9GE0YPQvdC40LrRhtC40Y8g0LLRi9C00LXQu9C10L3QuNGPINC/0LDQvNGP0YLQuCDQtNC70Y8g0LzQsNGC0YDQuNGGCmludCAqKk1hdENyZWF0ZShpbnQgc3Ryb2tpLGludCBzdG9sYmNpKXsKCWludCAqKm1hdCA9IG5ldyBpbnQgKiBbc3Ryb2tpXTsKCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBzdHJva2k7ICsraSl7CgkJCQltYXRbaV0gPSBuZXcgaW50IFtzdG9sYmNpXTt9CgkJCXJldHVybiBtYXQ7fTsKLy/RhNGD0L3QutGG0LjRjyDQt9Cw0L/QvtC70L3QtdC90LjRjyDQvNCw0YLRgNC40YYKdm9pZCBNYXRJbihpbnQgc3Ryb2tpLGludCBzdG9sYmNpLGludCAqKm1hdCl7Cglmb3IgKGludCBpID0gMDsgaSA8IHN0cm9raTsgKytpKXsKCQkJZm9yIChpbnQgaiA9IDA7IGogPCBzdG9sYmNpOyArK2opewoJCQkJY2luID4+IG1hdFtpXVtqXTt9fQp9OwovL9GE0YPQvdC60YbQuNGPINC+0LHQvdGD0LvQtdC90LjRjyDQt9C90LDRh9C10L3QuNC5INCyINC80LDRgtGA0LjRhtC1INC/0YDQvtC40LfQstC10LTQtdC90LjRjyAJCQp2b2lkIE9ibnVsYXRvclN1bShpbnQgKiptYXQzLGludCBzdHJva2ltYXQxLCBpbnQgc3RvbGJjaW1hdDIpewoJZm9yIChpbnQgaSA9IDA7IGkgPCBzdHJva2ltYXQxOyArK2kpewoJCQkJCWZvciAoaW50IGogPSAwOyBqIDwgc3RvbGJjaW1hdDI7ICsrail7CgkJCQkJCW1hdDNbaV1bal0gPSAwOwoJCQkJfX0KfQovL9GE0YPQvdC60YbQuNGPINC/0L7QtNGB0YfQtdGC0LAg0LzQsNGC0YDQuNGG0Ysg0L/RgNC+0LjQt9Cy0LXQtNC10L3QuNGPCnZvaWQgTWF0VW0oaW50ICoqbWF0MSxpbnQgKiptYXQyLGludCAqKm1hdDMsaW50IGEsaW50IGQsaW50IGIpewoJZm9yIChpbnQgaSA9IDA7IGkgPCBhOyArK2kpCgkJCWZvciAoaW50IG4gPSAwOyBuIDwgZDsgKytuKQoJCQkJZm9yIChpbnQgaiA9IDA7IGogPCBiOyArK2opCgkJCQkJbWF0M1tpXVtuXSArPSBtYXQxW2ldW2pdICogbWF0MltqXVtuXTsKfQovL9GE0YPQvdC60YbQuNGPINCy0YvQstC+0LTRj9GJ0LDRjyDQt9C90LDRh9C10L3QuNGPINC80LDRgtGA0LjRhgp2b2lkIG1hdHByaW50KGludCAqKm1hdCwgaW50IHN0cm9raW1hdCwgaW50IHN0b2xiY2ltYXQpewoJZm9yIChpbnQgaSA9IDA7IGkgPCBzdHJva2ltYXQ7ICsraSl7CgkJZm9yIChpbnQgbiA9IDA7IG4gPCBzdG9sYmNpbWF0OyArK24pewoJCQljb3V0IDw8IHNldHcoMykgPDxtYXRbaV1bbl07CgkJfQoJCWNvdXQ8PGVuZGw7Cgl9Cn07Ci8v0YTRg9C90LrRhtC40Y8g0L7RgdCy0L7QsdC+0LbQtNC10L3QuNGPINC/0LDQvNGP0YLQuAp2b2lkIG1hdGRlbGV0ZShpbnQgKiptYXQsIGludCBzdHJva2kpewoJCQlmb3IgKGludCBpID0gMDsgaSA8IHN0cm9raTsgKytpKSB7CgkJICAgICAgICBkZWxldGUgW10gbWF0W2ldOwoJCSAgICB9CgkJICAgIGRlbGV0ZSBbXSBtYXQ7Cn0KCQkgICAgCgkJCQkKCmludCBtYWluKCkgewppbnQgYSAsYiAsYyAsZDsgCmludCAqKm1hdDEsKiptYXQyLCoqbWF0MzsgCmNpbiA+PiBhID4+IGIgPj4gYyA+PiBkOy8v0LLQstC+0LQg0YHRgtGA0L7QuiDQuCDRgdGC0L7Qu9Cx0YbQvtCyINC/0LXRgNCy0L7QuSDQuCDQstGC0L7RgNC+0Lkg0LzQsNGC0YDQuNGG0YsgCglpZiAoYiA9PSBjKXsKCQoJbWF0MSA9IE1hdENyZWF0ZShhLGIpOwoJbWF0MiA9IE1hdENyZWF0ZShjLGQpOwoJbWF0MyA9IE1hdENyZWF0ZShhLGQpOwoJCglNYXRJbihhLGIsbWF0MSk7Cgljb3V0IDw8ICLQvNCw0YLRgNC40YbQsCDihJYxIjw8ZW5kbCA7CgltYXRwcmludChtYXQxLGEsYik7CgoJTWF0SW4oYyxkLG1hdDIpOwoJY291dCA8PCAi0LzQsNGC0YDQuNGG0LAg4oSWMiI8PGVuZGwgOwoJbWF0cHJpbnQobWF0MixjLGQpOwoKCU9ibnVsYXRvclN1bShtYXQzLGEsZCk7Cgljb3V0IDw8ICLQvNCw0YLRgNC40YbQsCDihJYzIjw8ZW5kbCA7CgltYXRwcmludChtYXQzLGEsZCk7Cgljb3V0IDw8ICAi0LzQsNGC0YDQuNGG0LAg0L/RgNC+0LjQt9Cy0LXQtNC10L3QuNGPOiAiPDwgYSA8PCIgeCAiPDxkIDw8ZW5kbDsKCU1hdFVtKG1hdDEsIG1hdDIsIG1hdDMsIGEsZCxiKTsgLyrRjyDQvdC1INC80L7Qs9GDINC+0LHRitGP0YHQvdC40YLRjCDRhNC10L3QvtC80LXQvSDQv9C+0YfQtdC80YMg0YMg0LzQtdC90Y8g0LzQsNGC0YDQuNGG0LAgCgnRgdGH0LjRgtCw0LXRgtGB0Y8g0L3QvtGA0LzQsNC70YzQvdC+INCwINCy0YvQstC+0LTQuNGC0YzRgdGPINC90LXQvdC+0YDQvNCw0LvRjNC90L4gKi8KCgltYXRwcmludChtYXQzLGEsZCk7CgkKCW1hdGRlbGV0ZShtYXQxLGEpOwoJbWF0ZGVsZXRlKG1hdDIsYyk7CgltYXRkZWxldGUobWF0MyxhKTsKCgl9CgllbHNlewoJCWNvdXQgPDwgIiDQvNCw0YLRgNC40YbRiyDQvdC1INGB0L7QstC80LXRgdGC0LjQvNGLICIgPDwgZW5kbDsKCX0KCQoJcmV0dXJuIDA7Cn0=