C Programm kahe maatriksi korrutamiseks mitmemõõtmeliste massiivide abil

Lang L: none (table-of-contents)

Selles näites õpite korrutama kahte maatriksit ja kuvama seda kasutaja määratud funktsioonide abil.

Selle näite mõistmiseks peaksid teil olema teadmised järgmistest C-programmeerimise teemadest:

  • C Massiivid
  • C Mitmemõõtmelised massiivid

See programm palub kasutajal sisestada kahe maatriksi suurus (read ja veerud).

Kahe maatriksi korrutamiseks peaks esimese maatriksi veergude arv olema võrdne teise maatriksi ridade arvuga .

Allpool olev programm küsib kahe maatriksi ridade ja veergude arvu, kuni ülaltoodud tingimus on täidetud.

Seejärel viiakse läbi kahe maatriksi korrutamine ja tulemus kuvatakse ekraanil.

Selle teostamiseks oleme loonud kolm funktsiooni:

  • getMatrixElements() - võtta maatriksielemente kasutajalt.
  • multiplyMatrices() - korrutada kaks maatriksit.
  • display() - kuvada saadud maatriks pärast korrutamist.

Korrutage maatriksid, edastades selle funktsioonile

 #include // function to get matrix elements entered by the user void getMatrixElements(int matrix()(10), int row, int column) ( printf("Enter elements: "); for (int i = 0; i < row; ++i) ( for (int j = 0; j < column; ++j) ( printf("Enter a%d%d: ", i + 1, j + 1); scanf("%d", &matrix(i)(j)); ) ) ) // function to multiply two matrices void multiplyMatrices(int first()(10), int second()(10), int result()(10), int r1, int c1, int r2, int c2) ( // Initializing elements of matrix mult to 0. for (int i = 0; i < r1; ++i) ( for (int j = 0; j < c2; ++j) ( result(i)(j) = 0; ) ) // Multiplying first and second matrices and storing it in result for (int i = 0; i < r1; ++i) ( for (int j = 0; j < c2; ++j) ( for (int k = 0; k < c1; ++k) ( result(i)(j) += first(i)(k) * second(k)(j); ) ) ) ) // function to display the matrix void display(int result()(10), int row, int column) ( printf("Output Matrix:"); for (int i = 0; i < row; ++i) ( for (int j = 0; j < column; ++j) ( printf("%d ", result(i)(j)); if (j == column - 1) printf(""); ) ) ) int main() ( int first(10)(10), second(10)(10), result(10)(10), r1, c1, r2, c2; printf("Enter rows and column for the first matrix: "); scanf("%d %d", &r1, &c1); printf("Enter rows and column for the second matrix: "); scanf("%d %d", &r2, &c2); // Taking input until // 1st matrix columns is not equal to 2nd matrix row while (c1 != r2) ( printf("Error! Enter rows and columns again."); printf("Enter rows and columns for the first matrix: "); scanf("%d%d", &r1, &c1); printf("Enter rows and columns for the second matrix: "); scanf("%d%d", &r2, &c2); ) // get elements of the first matrix getMatrixElements(first, r1, c1); // get elements of the second matrix getMatrixElements(second, r2, c2); // multiply two matrices. multiplyMatrices(first, second, result, r1, c1, r2, c2); // display the result display(result, r1, c2); return 0; )

Väljund

 Sisestage esimese maatriksi read ja veerg: 2 3 Sisestage teise maatriksi read ja veerg: 3 2 Sisestage elemendid: sisestage a11: 2 sisestage a12: -3 sisestage a13: 4 sisestage a21: 53 sisestage a22: 3 sisestage a23: 5 Sisestage elemendid: sisestage a11: 3 sisestage a12: 3 sisestage a21: 5 sisestage a22: 0 sisestage a31: -3 sisestage a32: 4 väljundmaatriks: -21 22 159 179

Huvitavad Artiklid...