Program za množenje dveh matric z uporabo večdimenzionalnih nizov

V tem primeru se boste naučili množiti dve matriki in jo prikazati z uporabniško določenimi funkcijami.

Če želite razumeti ta primer, morate poznati naslednje teme programiranja C:

  • C Nizki
  • C Večdimenzionalni nizi

Ta program od uporabnika zahteva, da vnese velikost (vrstic in stolpcev) dveh matric.

Če želite pomnožiti dve matriki, mora biti število stolpcev prve matrice enako številu vrstic druge matrike .

Spodnji program zahteva število vrstic in stolpcev dveh matric, dokler ni izpolnjen zgornji pogoj.

Nato se izvede množenje dveh matric in rezultat se prikaže na zaslonu.

Za to smo ustvarili tri funkcije:

  • getMatrixElements() - jemati matrične elemente od uporabnika.
  • multiplyMatrices() - pomnožiti dve matriki.
  • display() - za prikaz nastale matrike po množenju.

Pomnožite matrike tako, da jih prenesete v funkcijo

 #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; )

Izhod

 Vnesite vrstice in stolpce za prvo matrico: 2 3 Vnesite vrstice in stolpce za drugo matrico: 3 2 Vnesite elemente: Vnesite a11: 2 Vnesite a12: -3 Vnesite a13: 4 Vnesite a21: 53 Vnesite a22: 3 Vnesite a23: 5 Vnesite elemente: Vnesite a11: 3 Vnesite a12: 3 Vnesite a21: 5 Vnesite a22: 0 Vnesite a31: -3 Vnesite a32: 4 Izhodna matrica: -21 22 159 179

Zanimive Članki...