#include <stdio.h>
#include <malloc.h>
int main() {
int arrMatrixMultiplication(int *matrix1, int firstRow, int firstColumn, int *matrix2, int secondRow, int secondColumn, int *resultMatrix);
void arrFillRandom(int *arrayPtr, int sizeRow, int sizeColumn, int randomRange);
int matrix1[2][3];
int matrix2[3][2];
int *ptr1, *ptr2;
ptr1 = &matrix1[0][0];
ptr2 = &matrix2[0][0];
arrFillRandom(ptr1, 2, 3, 10);
arrFillRandom(ptr2, 3, 2, 10);
int resultMatrix[2][2];
int *ptr3;
ptr3 = &resultMatrix[0][0];
arrMatrixMultiplication(ptr1, 2, 3, ptr2, 3, 2, ptr3);
printf("\nThe result is: \n");
return 0;
}
int arrMatrixMultiplication(int *matrix1, int firstRow, int firstColumn, int *matrix2, int secondRow, int secondColumn, int *resultMatrix) {
int i, j, k, sum = 0;
if (firstColumn != secondRow) {
return 0;
} else {
for (i = 0; i < firstRow; i++) {
for (j = 0; j < secondColumn; j++) {
for (k = 0; k < secondRow; k++) {
sum = sum + (matrix1[i * secondColumn + k] * matrix2[k * secondColumn + j]);
}
resultMatrix[i * secondColumn + j] = sum;
sum = 0;
}
}
}
for (i = 0; i < firstRow; i++) {
for (j = 0; j < secondColumn; j++)
printf("%d\t", resultMatrix
[i
* secondColumn
+ j
]); }
}
void arrFillRandom(int *arrayPtr, int sizeRow, int sizeColumn, int randomRange) {
int i, j;
for (i = 0; i < sizeRow; i++)
for (j = 0; j < sizeColumn; j++)
(arrayPtr
+ i
)[j
] = (rand() % randomRange
);
for (i = 0; i < sizeRow; i++) {
for (j = 0; j < sizeColumn; j++)
printf("%d\t", (arrayPtr
+ i
)[j
]); }
}
ICAgICNpbmNsdWRlIDxzdGRpby5oPgogICAgI2luY2x1ZGUgPG1hbGxvYy5oPgogICAgaW50IG1haW4oKSB7CiAgICAKICAgIGludCBhcnJNYXRyaXhNdWx0aXBsaWNhdGlvbihpbnQgKm1hdHJpeDEsIGludCBmaXJzdFJvdywgaW50IGZpcnN0Q29sdW1uLCBpbnQgKm1hdHJpeDIsIGludCBzZWNvbmRSb3csIGludCBzZWNvbmRDb2x1bW4sIGludCAqcmVzdWx0TWF0cml4KTsKICAgIHZvaWQgYXJyRmlsbFJhbmRvbShpbnQgKmFycmF5UHRyLCBpbnQgc2l6ZVJvdywgaW50IHNpemVDb2x1bW4sIGludCByYW5kb21SYW5nZSk7CiAgICAKICAgIGludCBtYXRyaXgxWzJdWzNdOwogICAgaW50IG1hdHJpeDJbM11bMl07CiAgICAgCiAgICBpbnQgKnB0cjEsICpwdHIyOwogICAgcHRyMSA9ICZtYXRyaXgxWzBdWzBdOwogICAgcHRyMiA9ICZtYXRyaXgyWzBdWzBdOwogICAgIAogICAgYXJyRmlsbFJhbmRvbShwdHIxLCAyLCAzLCAxMCk7CiAgICBhcnJGaWxsUmFuZG9tKHB0cjIsIDMsIDIsIDEwKTsKICAgICAKICAgIGludCByZXN1bHRNYXRyaXhbMl1bMl07CiAgICBpbnQgKnB0cjM7CiAgICBwdHIzID0gJnJlc3VsdE1hdHJpeFswXVswXTsKICAgICAKICAgIGFyck1hdHJpeE11bHRpcGxpY2F0aW9uKHB0cjEsIDIsIDMsIHB0cjIsIDMsIDIsIHB0cjMpOwogICAgcHJpbnRmKCJcblRoZSByZXN1bHQgaXM6IFxuIik7CiAgICBwcmludGYoIiVkIiwgcHRyM1swXSk7CiAgICAgCiAgICByZXR1cm4gMDsKICAgIH0KICAgICAKICAgIGludCBhcnJNYXRyaXhNdWx0aXBsaWNhdGlvbihpbnQgKm1hdHJpeDEsIGludCBmaXJzdFJvdywgaW50IGZpcnN0Q29sdW1uLCBpbnQgKm1hdHJpeDIsIGludCBzZWNvbmRSb3csIGludCBzZWNvbmRDb2x1bW4sIGludCAqcmVzdWx0TWF0cml4KSB7CiAgICBpbnQgaSwgaiwgaywgc3VtID0gMDsKICAgICAKICAgIAlpZiAoZmlyc3RDb2x1bW4gIT0gc2Vjb25kUm93KSB7CiAgICAJCXJldHVybiAwOwogICAgCX0gZWxzZSB7CiAgICAJCWZvciAoaSA9IDA7IGkgPCBmaXJzdFJvdzsgaSsrKSB7CiAgICAJCQlmb3IgKGogPSAwOyBqIDwgc2Vjb25kQ29sdW1uOyBqKyspIHsKICAgIAkJCQlmb3IgKGsgPSAwOyBrIDwgc2Vjb25kUm93OyBrKyspIHsKICAgIAkJCQkJc3VtID0gc3VtICsgKG1hdHJpeDFbaSAqIHNlY29uZENvbHVtbiArIGtdICogbWF0cml4MltrICogc2Vjb25kQ29sdW1uICsgal0pOwogICAgCQkJCX0KICAgIAkJCQlyZXN1bHRNYXRyaXhbaSAqIHNlY29uZENvbHVtbiArIGpdID0gc3VtOwogICAgCQkJCXN1bSA9IDA7CiAgICAJCQl9CiAgICAJCX0KICAgIAl9CiAgICAgCiAgICAJZm9yIChpID0gMDsgaSA8IGZpcnN0Um93OyBpKyspIHsKICAgIAkJcHJpbnRmKCJcbiIpOwogICAgCQlmb3IgKGogPSAwOyBqIDwgc2Vjb25kQ29sdW1uOyBqKyspCiAgICAJCQlwcmludGYoIiVkXHQiLCByZXN1bHRNYXRyaXhbaSAqIHNlY29uZENvbHVtbiArIGpdKTsKICAgIAl9CiAgICB9CiAgICAKICAgIHZvaWQgYXJyRmlsbFJhbmRvbShpbnQgKmFycmF5UHRyLCBpbnQgc2l6ZVJvdywgaW50IHNpemVDb2x1bW4sIGludCByYW5kb21SYW5nZSkgewoJaW50IGksIGo7CgkJCglmb3IgKGkgPSAwOyBpIDwgc2l6ZVJvdzsgaSsrKQoJCWZvciAoaiA9IDA7IGogPCBzaXplQ29sdW1uOyBqKyspCgkJCShhcnJheVB0ciArIGkpW2pdID0gKHJhbmQoKSAlIHJhbmRvbVJhbmdlKTsKCQkKCWZvciAoaSA9IDA7IGkgPCBzaXplUm93OyBpKyspIHsKCQlwcmludGYoIlxuIik7CgkJZm9yIChqID0gMDsgaiA8IHNpemVDb2x1bW47IGorKykKCQkJcHJpbnRmKCIlZFx0IiwgKGFycmF5UHRyICsgaSlbal0pOwoJfQp9