Ko‘p o‘lchovli massivlar
Ko‘p o‘lchovli massivlar
Ko‘p o‘lchovli massiv — bu massivlardan tashkil topgan massiv.
Ko‘p o‘lchovli massiv e’lon qilish uchun o‘zgaruvchi tipini aniqlang, massiv nomini yozing, undan keyin asosiy massivda nechta element borligini ko‘rsatuvchi kvadrat qavslarni, so‘ngra ichki massivlarda nechta element borligini bildiruvchi yana bir juft kvadrat qavsni yozing:
string letters[2][4];
Oddiy massivlardagi kabi qiymatlarni massiv literali — figurali qavslar ichidagi vergul bilan ajratilgan ro‘yxat yordamida kiritishingiz mumkin. Ko‘p o‘lchovli massivda massiv literalidagi har bir element o‘zi ham boshqa massiv literali hisoblanadi.
string letters[2][4] = {
{ "A", "B", "C", "D" },
{ "E", "F", "G", "H" }
};
Massiv e’lonidagi har bir juft kvadrat qavs massivga yana bitta o‘lcham qo‘shadi. Yuqoridagiga o‘xshash massiv ikki o‘lchovli deb ataladi.
Massivlar istalgan miqdordagi o‘lchamga ega bo‘lishi mumkin. Massivning o‘lchamlari qancha ko‘p bo‘lsa, kod shuncha murakkablashadi. Quyidagi massiv uch o‘lchovli:
string letters[2][2][2] = {
{
{ "A", "B" },
{ "C", "D" }
},
{
{ "E", "F" },
{ "G", "H" }
}
};
Ko‘p o‘lchovli massiv elementlariga murojaat qilish
Ko‘p o‘lchovli massiv elementiga murojaat qilish uchun massivning har bir o‘lchamida indeks raqamini ko‘rsating.
Ushbu ko‘rsatma letters massivining birinchi qatori (0) va uchinchi ustunidagi (2) element qiymatiga murojaat qiladi.
Misol
string letters[2][4] = {
{ "A", "B", "C", "D" },
{ "E", "F", "G", "H" }
};
cout << letters[0][2]; // Outputs "C"
O‘zingiz sinab ko‘ring »
Yodda tuting: Massiv indekslari 0 dan boshlanadi: [0] — birinchi element, [1] — ikkinchi element va hokazo.
Ko‘p o‘lchovli massiv elementlarini o‘zgartirish
Element qiymatini o‘zgartirish uchun har bir o‘lchamdagi element indeks raqamiga murojaat qiling:
Misol
string letters[2][4] = {
{ "A", "B", "C", "D" },
{ "E", "F", "G", "H" }
};
letters[0][0] = "Z";
cout << letters[0][0]; // Now outputs "Z" instead of "A"
O‘zingiz sinab ko‘ring »
Ko‘p o‘lchovli massivni aylanib chiqish
Ko‘p o‘lchovli massivni aylanib chiqish uchun massivning har bir o‘lchami uchun bittadan sikl kerak bo‘ladi.
Quyidagi misol letters massividagi barcha elementlarni chiqaradi:
Misol
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";
}
}
O‘zingiz sinab ko‘ring »
Bu misolda uch o‘lchovli massivni qanday aylanib chiqish ko‘rsatilgan:
Misol
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";
}
}
}
O‘zingiz sinab ko‘ring »
Nega ko‘p o‘lchovli massivlar?
Ko‘p o‘lchovli massivlar to‘rlarni (grid) ifodalash uchun juda qulay. Bu misolda ularning amaliy qo‘llanilishi ko‘rsatilgan. Quyidagi misolda kichik "Dengiz jangi" (Battleship) o‘yinini ifodalash uchun ko‘p o‘lchovli massivdan foydalanamiz:
Misol
// We put "1" to indicate there is a ship.
bool ships[4][4] = {
{ 0, 1, 1, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 1, 0 },
{ 0, 0, 1, 0 }
};
// Keep track of how many hits the player has and how many turns they have played in these variables
int hits = 0;
int numberOfTurns = 0;
// Allow the player to keep going until they have hit all four ships
while (hits < 4) {
int row, column;
cout << "Selecting coordinates\n";
// Ask the player for a row
cout << "Choose a row number between 0 and 3: ";
cin >> row;
// Ask the player for a column
cout << "Choose a column number between 0 and 3: ";
cin >> column;
// Check if a ship exists in those coordinates
if (ships[row][column]) {
// If the player hit a ship, remove it by setting the value to zero.
ships[row][column] = 0;
// Increase the hit counter
hits++;
// Tell the player that they have hit a ship and how many ships are left
cout << "Hit! " << (4-hits) << " left.\n\n";
} else {
// Tell the player that they missed
cout << "Miss\n\n";
}
// Count how many turns the player has taken
numberOfTurns++;
}
cout << "Victory!\n";
cout << "You won in " << numberOfTurns << " turns";
Misolni ishga tushirish »
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
