Thứ Tư, 10 tháng 4, 2024

30.Mảng 2 chiều trong C

Chúng ta đã thảo luận qua về mảng 1 chiều. Mặt khác, nếu chúng ta muốn lưu trữ dữ liệu dưới dạng bảng, chẳng hạn như bảng có hàng và cột, chúng ta cần làm quen với mảng đa chiều. Mảng nhiều chiều về cơ bản là một mảng gồm nhiều mảng.


Chúng ta sẽ chỉ bàn về mảng 2 chiều trong phần này.

Một ví dụ gần với thực tế:

Chúng ta có danh sách 4 phim khác nhau. Và các phim đó đều có 4 tổ chức khác nhau đánh giá xếp hạng. Tổng hợp các thông tin đó cần được lưu trữ trong một bảng 2 chiều. Hình bên dưới cho ta một cái nhìn tổng quan về thông tin đánh giá các phim được lưu trữ ra sao


Ví dụ ta có thể truy cập mảng trên, ví dụ tên là danhGiaPhim

danhGiaPhim[0][2] = 2 //Tổ chức đánh giá sô 0 cho phim số 2 điểm 2

danhGiaPhim[1][3] = 7//Tổ chức đánh giá sô 1 cho phim số 3 điểm 7

Để truy cập các phần tử trong mảng 2 chiều ta thông qua chỉ số hàng và cột được đánh số từ 0

Chú ý để truy cập vào phần tử trong mảng 2 chiều ta luôn dùng chỉ số hàng (row) trước, chỉ số cột (column) sau

Cú pháp khai báo : Data_type array_name[rows][cols];

    Data_type : Kiểu dữ liệu của phần tử trong mảng như int, float, char, double..
    array_name : Tên mảng 2 chiều
    rows : Số hàng của mảng 2 chiều
    cols : Số cột của mảng 2 chiều 

 

Ví dụ khởi tạo mảng 2 chiều. Mảng có 2 hàng (rows) và 3 cột (column)



int maTran[2][3] = { {1, 4, 2}, {3, 6, 8} };

 

Hàng thứ nhất có các phần tử 1  4  2 

Hàng thứ hai có các phần tử 3  6  8

 

Đây là ví dụ truy xuất các phần tử trong mảng 2 chiều. Bạn sử dụng IDE Online để chạy thử:

#include <stdio.h>

int main() {
  int maTran[2][3] = { {1, 4, 2}, {3, 6, 8} };
  printf("Phần tử [0][2]: %d", maTran[0][2]);
 
  return 0;
}

 

Kết quả:


 

Để in ra mảng 2 chiều bạn dùng 2 vòng lặp lồng nhau, vòng lặp ngoài duyệt qua hàng, vòng for trong duyệt qua từng cột của hàng. Đây là ví dụ, bạn sử dụng IDE Online để chạy thử, nên thử với số nhỏ ví dụ 2 2 :



#include <stdio.h>

int main(){
    int n, m; // n : hàng, m : c?t
    int a[205][205]; // 205 x 205
    printf("Nhap số hàng cột (Nhập số hàng trước cách một khoảng trắng nhập số cột, ví dụ 2 2) : ");
    scanf("%d%d", &n, &m);
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            printf("a[%d][%d] = ", i, j);
            scanf("%d", &a[i][j]);
        }
    }
    printf("Mảng vừa nhập :\n");
    for(int i = 0; i < n; i++){  // Vòng lặp này sẽ duyệt qua hàng
        for(int j = 0; j < m; j++){ // Vòng lặp này sẽ duyệt qua cột
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

 

Kết quả :

 


 

Phần tiếp theo


Phần trước

 

Không có nhận xét nào:

Đăng nhận xét