Mảng nhiều chiều

Mảng có thể có hơn một chiều (nghĩa là, hai, ba, hoặc cao hơn.Việc tố chức mảng trong bộ nhớ thì cũng tương tự không có gì thay đổi (một chuồi liên tiếp các phần tử) nhưng cách tổ chức mà lập trình viên có thế lĩnh hội được thì lại khác. Ví dụ chúng ta muốn biếu diễn nhiệt độ trung bình theo từng mùa cho ba thành phố chính của ú c (xem Bảng phía dưới).

Bảng nhiệt độ trong bình theo mùa

Mùa xuân Mùa hè Mùa thu Mùa đông
Sydney 26 34 22 17
Melbourne 28 38 25 20

Điều này có thể được biểu diễn bằng một mảng hai chiều mà mỗi phần tử mảng là một số nguyên.

int seasonTemp[2][4];

Cách tổ chức mảng này trong bộ nhớ như là 12 phần tử số nguyên liên tiếp nhau. Tuy nhiên, lập trình viên có thế tưởng tượng nó như là một mảng gồm ba hàng với mỗi hàng có bốn phần tử số nguyên.

Như trước, các phần tử được truy xuất thông qua chỉ số mảng. Một chỉ số riêng biệt được cần cho mỗi mảng. Ví dụ, nhiệt độ mùa hè trung bình của thành phố Sydney (hàng đầu tiên cột thứ hai) được cho bởi seasonTemp[0][l]. Mảng có thế được khởi tạo bằng cách sử dụng một bộ khỏi tạo lồng nhau:

int seasonTemp[2][4] = {

{26,34,22,17},

{28,38,25,20}

}

Bởi vì điều này ánh xạ tới mảng một chiều gồm 12 phần tử trong bộ nhớ nên nó tương đương với:

int seasonTemp[][4] = {

{26,34,22,17},

{28,38,25,20}

}

Xử lý mảng nhiều chiều thì tương tự như là mảng một chiều nhưng phải xử lý các vòng lặp lồng nhau thay vì vòng lặp đơn. Đoạn mã dưới đây mô tả điều này bằng cách trình bày một hàm để tìm nhiệt độ cao nhất trong mảng seasonTemp.

const int rows = 2;

const int columns = 4;

int seasonTemp[rows][columas] = {

{26,34,22,17},

{24,32,19,13}

};

int HighestTemp (int temp[nows][columns])

{

int highest=0;

for (register i=0; i < rows; ++i)

for (register j = 0; j < columns; ++j)

if (temp[i][j] > highest)

highest=temp[i][j];

return highest;

}

results matching ""

    No results matching ""