آرایه های چندبعدی (Multidimensional Arrays)
آرایه چندبعدی یعنی «آرایه ای از آرایه ها». مثل جدول کلاس. هر «بعد (Dimension)» یعنی یک جهت شمارش، مثل سطر یا ستون. الان خیلی ساده و مدرسه ای پیش می رویم.
تعریف آرایه های چندبعدی
اول نوع و نام را می نویسیم. سپس دو براکت برای سطر و ستون می آید.
string letters[2][4];
می توانیم مقداردهی هم زمان انجام دهیم. هر عضو خودش یک آرایه است.
string letters[2][4] = {
{ "A", "B", "C", "D" },
{ "E", "F", "G", "H" }
};
آرایه می تواند سه بعدی هم باشد. ولی کد پیچیده تر می شود.
string letters[2][2][2] = {
{
{ "A", "B" },
{ "C", "D" }
},
{
{ "E", "F" },
{ "G", "H" }
}
};
دسترسی به عنصر در آرایه چندبعدی
برای دسترسی، اندیس سطر و ستون را می دهیم. اندیس از صفر شروع می شود.
string letters[2][4] = {
{ "A", "B", "C", "D" },
{ "E", "F", "G", "H" }
};
cout << letters[0][2];
تغییر مقدار در آرایه چندبعدی
برای تغییر، همان اندیس ها را بنویس. مثل تغییر نمره جدول.
string letters[2][4] = {
{ "A", "B", "C", "D" },
{ "E", "F", "G", "H" }
};
letters[0][0] = "Z";
cout << letters[0][0];
حلقه روی آرایه های چندبعدی
برای هر بعد، یک حلقه لازم است. مثل حلقه تو در تو.
string letters[2][4] = {
{ "A", "B", "C", "D" },
{ "E", "F", "G", "H" }
};
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 4; j++) {
cout << letters[i][j] << "\n";
}
}
نمونه سه بعدی هم مشابه است. فقط یک حلقه دیگر می خواهیم.
string letters[2][2][2] = {
{
{ "A", "B" },
{ "C", "D" }
},
{
{ "E", "F" },
{ "G", "H" }
}
};
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
for (int k = 0; k < 2; k++) {
cout << letters[i][j][k] << "\n";
}
}
}
چرا آرایه های چندبعدی؟
برای نمایش «شبکه (Grid)» عالی اند. مثل صفحه بازی دریابازی.
// 1 یعنی کشتی وجود دارد.
bool ships[4][4] = {
{ 0, 1, 1, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 1, 0 },
{ 0, 0, 1, 0 }
};
int hits = 0;
int numberOfTurns = 0;
// ادامه تا زدن هر چهار کشتی
while (hits < 4) {
int row;
int column;
cout << "Selecting coordinates\n";
// پرسیدن سطر
cout << "Choose a row number between 0 and 3: ";
cin >> row;
// پرسیدن ستون
cout << "Choose a column number between 0 and 3: ";
cin >> column;
// چک کردن وجود کشتی
if (ships[row][column]) {
ships[row][column] = 0;
hits++;
cout << "Hit! " << (4 - hits) << " left.\n\n";
} else {
cout << "Miss\n\n";
}
numberOfTurns++;
}
cout << "Victory!\n";
cout << "You won in " << numberOfTurns << " turns";
گام های عملی
- ابعاد آرایه را مشخص کن.
- مقداردهی اولیه را منظم بنویس.
- با حلقه های تو در تو پیمایش کن.
نکته: اندیس ها از صفر شروع می شوند. مراقب اشتباه یک واحدی باش.
جمع بندی سریع
- آرایه چندبعدی یعنی جدول یا شبکه.
- برای هر بعد، یک حلقه لازم است.
- اندیس ها از صفر شروع می شوند.
- کد سه بعدی سریع پیچیده می شود.
برای ادامه یادگیری: آرایه ها و حلقه ها و گرفتن اندازه آرایه و نمونه عملی آرایه ها.