Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Chương trình C thực hiện phép toán trên ma trận 3x3

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.