C programma divu matricu reizināšanai, izmantojot daudzdimensiju masīvus

Šajā piemērā jūs iemācīsities reizināt divas matricas un parādīt to, izmantojot lietotāja definētas funkcijas.

Lai saprastu šo piemēru, jums vajadzētu būt zināšanām par šādām C programmēšanas tēmām:

  • C Masīvi
  • C Daudzdimensionāli masīvi

Šī programma lūdz lietotāju ievadīt divu matricu lielumu (rindas un kolonnas).

Lai reizinātu divas matricas, pirmās matricas kolonnu skaitam jābūt vienādam ar otrās matricas rindu skaitu .

Zemāk esošajā programmā tiek prasīts divu matricu rindu un kolonnu skaits, līdz tiek izpildīts iepriekš minētais nosacījums.

Pēc tam tiek veikta divu matricu reizināšana, un rezultāts tiek parādīts ekrānā.

Lai to izdarītu, mēs esam izveidojuši trīs funkcijas:

  • getMatrixElements() - ņemt matricas elementu ievadi no lietotāja.
  • multiplyMatrices() - reizināt divas matricas.
  • display() - lai parādītu iegūto matricu pēc reizināšanas.

Reiziniet matricas, nododot to funkcijai

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

Rezultāts

 Ievadiet rindas un kolonnu pirmajai matricai: 2 3 Ievadiet rindas un kolonnu otrajai matricai: 3 2 Ievadiet elementus: ievadiet a11: 2 ievadiet a12: -3 ievadiet a13: 4 ievadiet a21: 53 ievadiet a22: 3 ievadiet a23: 5 Ievadiet elementus: ievadiet a11: 3 ievadiet a12: 3 ievadiet a21: 5 ievadiet a22: 0 ievadiet a31: -3 ievadiet a32: 4 izvades matricu: -21 22 159 179

Interesanti raksti...