C Chương trình nhân hai ma trận bằng mảng đa chiều

Trong ví dụ này, bạn sẽ học cách nhân hai ma trận và hiển thị nó bằng các hàm do người dùng định nghĩa.

Để hiểu ví dụ này, bạn nên có kiến ​​thức về các chủ đề lập trình C sau:

  • C Mảng
  • C Mảng đa chiều

Chương trình này yêu cầu người dùng nhập kích thước (hàng và cột) của hai ma trận.

Để nhân hai ma trận, số cột của ma trận thứ nhất phải bằng số hàng của ma trận thứ hai .

Chương trình dưới đây yêu cầu số hàng và số cột của hai ma trận cho đến khi điều kiện trên được thỏa mãn.

Sau đó, phép nhân hai ma trận được thực hiện và kết quả được hiển thị trên màn hình.

Để thực hiện điều này, chúng tôi đã tạo ba chức năng:

  • getMatrixElements() - để lấy đầu vào các phần tử ma trận từ người dùng.
  • multiplyMatrices() - để nhân hai ma trận.
  • display() - để hiển thị ma trận kết quả sau khi nhân.

Nhân các ma trận bằng cách chuyển nó cho một hàm

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

Đầu ra

 Nhập hàng và cột cho ma trận thứ nhất: 2 3 Nhập hàng và cột cho ma trận thứ hai: 3 2 Nhập các phần tử: Nhập a11: 2 Nhập a12: -3 Nhập a13: 4 Nhập a21: 53 Nhập a22: 3 Nhập a23: 5 Nhập các phần tử: Nhập a11: 3 Nhập a12: 3 Nhập a21: 5 Nhập a22: 0 Nhập a31: -3 Nhập a32: 4 Ma trận đầu ra: -21 22 159 179

thú vị bài viết...