#include /* Nasobeni matice matici */ int main(void) { int pra, psa, prb, psb; // p -- pocet, r -- radku, s -- sloupcu, a -- matice vlevo, b -- matice vpravo scanf("%d %d %d %d", &pra, &psa, &prb, &psb); // nacteni rozmeru matic if (psa != prb) { // osetreni nekompatibilnich matic printf("Nekompatibilni matice\n"); return 1; } int ma[pra][psa]; // matice vlevo int mb[prb][psb]; // matice vpravo int mv[pra][psb]; // matice vysledku for (int i = 0; i < pra; ++i) // nacteni matice vlevo for (int j = 0; j < psa; ++j) scanf("%d", &ma[i][j]); for (int i = 0; i < prb; ++i) // nacteni matice vpravo for (int j = 0; j < psb; ++j) scanf("%d", &mb[i][j]); for (int i = 0; i < pra; ++i) { // vypis matice vlevo for (int j = 0; j < psa; ++j) printf("%4d", ma[i][j]); printf("\n"); } printf("\n"); for (int i = 0; i < prb; ++i) { // vypis matice vpravo for (int j = 0; j < psb; ++j) printf("%4d", mb[i][j]); printf("\n"); } printf("\n"); // vynasobeni matic for (int i = 0; i < pra; ++i) { // pres radky matice vlevo for (int j = 0; j < psb; ++j) { // pres sloupce matice vpravo int sum = 0; for (int k = 0; k < prb; ++k){ // soucet sum nasobku odpovidajicich prvku sum += ma[i][k] * mb[k][j]; } mv[i][j] = sum; } } for (int i = 0; i < pra; ++i) { // vypis vysledne matice for (int j = 0; j < psb; ++j) printf("%4d", mv[i][j]); printf("\n"); } return 0; }