Mô tả chương trình
Viết chương trình in ma trận tam giác dưới (lower triangular) và ma trận tam giác trên (upper triangular) của một mảng.
Ma trận tam giác (Triangular Matrix)
Ma trận tam giác là ma trận hoặc là tam giác dưới hoặc là tam giác trên.
Ma trận tam giác dưới (Lower Triangular Matrix)
Ma trận vuông được gọi là tam giác dưới nếu tất cả các phần tử trên đường chéo chính đều bằng 0.
Ma trận tam giác trên (Upper Triangular Matrix)
Ma trận vuông được gọi là tam giác trên nếu tất cả các phần tử dưới đường chéo chính đều bằng 0.
Ví dụ ma trận tam giác dưới:
$$L = \begin{bmatrix} \ell_{1,1} & 0 & 0 \\ \ell_{2,1} & \ell_{2,2} & 0 \\ \ell_{3,1} & \ell_{3,2} & \ell_{3,3} \end{bmatrix}$$
Ví dụ ma trận tam giác trên:
$$U = \begin{bmatrix} u_{1,1} & u_{1,2} & u_{1,3} \\ 0 & u_{2,2} & u_{2,3} \\ 0 & 0 & u_{3,3} \end{bmatrix}$$
Thuật toán
Ma trận tam giác dưới: Nếu vị trí cột > vị trí hàng → gán giá trị 0.
Ma trận tam giác trên: Nếu vị trí cột < vị trí hàng → gán giá trị 0.
Ví dụ mã nguồn
/* Chương trình tìm ma trận tam giác dưới và trên */
#include <stdio.h>
int main() {
int rows, cols, r, c, matrix[10][10];
// clrscr();
printf("Nhap so hang cua ma tran: ");
scanf("%d", &rows);
printf("\nNhap so cot cua ma tran: ");
scanf("%d", &cols);
printf("\nNhap cac phan tu cua ma tran:\n");
for (r = 0; r < rows; r++) {
for (c = 0; c < cols; c++)
scanf("%d", &matrix[r][c]);
}
printf("\nMa tran tam giac duoi (Lower Triangular):\n");
for (r = 0; r < rows; r++) {
printf("\n");
for (c = 0; c < cols; c++) {
if (r >= c)
printf("%d\t", matrix[r][c]);
else {
printf("0\t");
}
}
}
printf("\n\nMa tran tam giac tren (Upper Triangular):\n");
for (r = 0; r < rows; r++) {
printf("\n");
for (c = 0; c < cols; c++) {
if (r > c) {
printf("0\t");
} else {
printf("%d\t", matrix[r][c]);
}
}
}
// getch();
return 0;
}
Kết quả đầu ra
