Mô tả bài toán
Nhập 9 số nguyên, sắp xếp thành ma trận 3×3, sau đó tính tổng các hàng, tổng các cột và tổng 2 đường chéo.
Ma trận 3×3
x y z
p q r
a b c
Các tổng cần tính:
- Hàng: (x+y+z), (p+q+r), (a+b+c)
- Cột: (x+p+a), (y+q+b), (z+r+c)
- Chéo chính: (x+q+c)
- Chéo phụ: (a+q+z)
Chương trình C
#include <stdio.h>
int main() {
int x, y, z, p, q, r, a, b, c;
printf("Nhap 9 so nguyen: ");
scanf("%d %d %d %d %d %d %d %d %d",
&x, &y, &z, &p, &q, &r, &a, &b, &c);
// In ma trận
printf("\nMa tran 3x3:\n");
printf("%d %d %d\n", x, y, z);
printf("%d %d %d\n", p, q, r);
printf("%d %d %d\n", a, b, c);
// Tổng hàng
printf("\nTong cac hang: %d %d %d\n",
x + y + z, p + q + r, a + b + c);
// Tổng cột
printf("Tong cac cot: %d %d %d\n",
x + p + a, y + q + b, z + r + c);
// Tổng đường chéo
printf("Tong cheo chinh: %d\n", x + q + c);
printf("Tong cheo phu: %d\n", a + q + z);
return 0;
}
Kết quả chạy chương trình
Nhap 9 so nguyen: 2 4 6 3 5 7 8 9 2
Ma tran 3x3:
2 4 6
3 5 7
8 9 2
Tong cac hang: 12 15 19
Tong cac cot: 13 18 15
Tong cheo chinh: 9
Tong cheo phu: 19
Mở rộng: Sử dụng mảng 2 chiều
#include <stdio.h>
int main() {
int mt[3][3];
int i, j;
int tongHang[3] = {0}, tongCot[3] = {0};
int cheoChinh = 0, cheoPhu = 0;
printf("Nhap ma tran 3x3:\n");
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
scanf("%d", &mt[i][j]);
// Tính toán
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
tongHang[i] += mt[i][j];
tongCot[j] += mt[i][j];
}
cheoChinh += mt[i][i];
cheoPhu += mt[i][2 - i];
}
// In kết quả
printf("Tong hang: ");
for (i = 0; i < 3; i++) printf("%d ", tongHang[i]);
printf("\nTong cot: ");
for (i = 0; i < 3; i++) printf("%d ", tongCot[i]);
printf("\nCheo chinh: %d\n", cheoChinh);
printf("Cheo phu: %d\n", cheoPhu);
return 0;
}
Ứng dụng thực tế
- Kiểm tra ma phương (magic square) - tất cả hàng, cột, chéo bằng nhau
- Xử lý ảnh: kernel 3x3 (làm mờ, sắc nét, phát hiện cạnh)
- Game Tic-Tac-Toe: kiểm tra thắng/thua theo hàng, cột, chéo
- Đại số tuyến tính: trace (tổng đường chéo), determinant
Việc hiểu cách truy xuất chỉ số mảng 2 chiều (mt[i][j]) là nền tảng quan trọng cho nhiều thuật toán ma trận phức tạp hơn.