27 / 90

C++ Multidimensional Arrays

C++ ko'p o'lchamli massivlar

C++ tilida biz ko'p o'lchovli massiv deb nomlanuvchi massivning array ni yaratishimiz mumkin. Masalan:

example.cpp
int x[3][4];

Bu erda x ikki o'lchovli massivdir. U maksimal 12 ta elementni sig'dira oladi.

Biz bu massivni 3 qatorli jadval sifatida tasavvur qilishimiz mumkin va har bir satr quyida ko'rsatilganidek 4 ta ustunga ega.

Elements in two-dimensional array in C++ Programming

C++ two dimensional array

Uch o'lchovli massivlar ham xuddi shunday ishlaydi. Masalan:

example.cpp
float x[2][4][3];

Bu x massivida maksimal 24 ta element bo'lishi mumkin.

Massivdagi elementlarning umumiy sonini uning o‘lchamlarini ko‘paytirish orqali bilib olamiz:

example.cpp
2 x 4 x 3 = 24

Ko'p o'lchovli massivni ishga tushirish

Oddiy massiv singari, biz ko'p o'lchovli massivni bir nechta usulda ishga tushirishimiz mumkin.

1. Ikki o'lchovli massivni ishga tushirish

example.cpp
int test[2][3] = {2, 4, 5, 9, 0, 19};

Yuqoridagi usul afzal ko'rilmaydi. Ushbu massivni bir xil massiv elementlari bilan ishga tushirishning eng yaxshi usuli quyida keltirilgan:

example.cpp
int  test[2][3] = { {2, 4, 5}, {9, 0, 19}};

Bu massivda 2 ta satr va 3 ta ustun mavjud, shuning uchun bizda har birida 3 ta elementdan iborat ikkita qator elementlar mavjud.

Initializing a two-dimensional array in C++

C++ Two-dimensional array initialization

2. Uch o'lchovli massivni ishga tushirish

example.cpp
int test[2][3][4] = {3, 4, 2, 3, 0, -3, 9, 11, 23, 12, 23, 
                 2, 13, 4, 56, 3, 5, 9, 3, 5, 5, 1, 4, 9};

Bu uch o'lchovli massivni ishga tushirishning yaxshi usuli emas. Ushbu massivni ishga tushirishning eng yaxshi usuli:

example.cpp
int test[2][3][4] = { 
                     { {3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2} },
                     { {13, 4, 56, 3}, {5, 9, 3, 5}, {5, 1, 4, 9} }
                 };

Ushbu uch o'lchamli massivning o'lchamlariga e'tibor bering.

Birinchi o'lchov 2 qiymatiga ega. Shunday qilib, birinchi o'lchamni o'z ichiga olgan ikkita element:

kod
Element 1 = { {3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2} }
Element 2 = { {13, 4, 56, 3}, {5, 9, 3, 5}, {5, 1, 4, 9} }

Ikkinchi o'lchov 3 qiymatiga ega. E'tibor bering, birinchi o'lchamdagi elementlarning har biri uchta elementga ega:

kod
{3, 4, 2, 3}, {0, -3, 9, 11} and {23, 12, 23, 2} for Element 1.
{13, 4, 56, 3}, {5, 9, 3, 5} and {5, 1, 4, 9} for Element 2.

Va nihoyat, ikkinchi o'lchamdagi elementlarning har birida to'rtta int raqami mavjud:

kod
{3, 4, 2, 3}
{0, -3, 9, 11}
... .. ...
... .. ...

1-misol: Ikki o‘lchovli massiv

example.cpp
// Barcha elementlarni ko'rsatish uchun C++ dasturi
// ishga tushirilgan ikki o'lchovli massivning

#include <iostream>
using namespace std;

int main() {
    int test[3][2] = {{2, -5},
                      {4, 0},
                      {9, 1}};

    // nested for loop va yuklash
    // massiv qatorlariga kirish
    for (int i = 0; i < 3; ++i) {

        // massiv ustunlariga kirish
        for (int j = 0; j < 2; ++j) {
            cout << "test[" << i << "][" << j << "] = " << test[i][j] << endl;
        }
    }

    return 0;
}

Chiqish

kod
test[0][0] = 2
test[0][1] = -5
test[1][0] = 4
test[1][1] = 0
test[2][0] = 9
test[2][1] = 1

Yuqoridagi misolda biz test deb nomlangan ikki o'lchovli int massivini ishga tushirdik, unda 3 ta "qator" va 2 ta "ustun" mavjud.

Bu erda biz massiv elementlarini ko'rsatish uchun o'rnatilgan for siklidan foydalandik.

  • i == 0 dan i == 2 gacha bo'lgan tashqi sikl massiv qatorlariga kirish imkonini beradi
  • j == 0 dan j == 1 gacha bo'lgan ichki sikl massiv ustunlariga kirish imkonini beradi

Nihoyat, har bir iteratsiyada massiv elementlarini chop etamiz.

2-misol: Ikki o'lchovli massiv uchun kiritish

example.cpp
#include <iostream>
using namespace std;

int main() {
    int numbers[2][3];

    cout << "Enter 6 numbers: " << endl;

    // Massivda foydalanuvchi ma'lumotlarini saqlash
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 3; ++j) {
            cin >> numbers[i][j];
        }
    }

    cout << "The numbers are: " << endl;

    // Massiv elementlarini chop etish
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 3; ++j) {
            cout << "numbers[" << i << "][" << j << "]: " << numbers[i][j] << endl;
        }
    }

    return 0;
}

Chiqish

kod
Enter 6 numbers: 
1
2
3
4
5
6
The numbers are:
numbers[0][0]: 1
numbers[0][1]: 2
numbers[0][2]: 3
numbers[1][0]: 4
numbers[1][1]: 5
numbers[1][2]: 6

Bu erda biz 2d massivini kiritish uchun nested for loop dan foydalandik. Barcha kiritilgan ma'lumotlar olingandan so'ng, biz massiv a'zolarini chop etish uchun boshqa ichki for siklidan foydalandik.

3-misol: Uch o‘lchovli massiv

example.cpp
// Foydalanuvchi tomonidan kiritilgan qiymatni saqlash uchun C++ dasturi
// uch o'lchovli massivni yarating va uni ko'rsating.

#include <iostream>
using namespace std;

int main() {
    // Bu massiv 12 tagacha elementni saqlashi mumkin (2x3x2)
    int test[2][3][2] = {
                            {
                                {1, 2},
                                {3, 4},
                                {5, 6}
                            }, 
                            {
                                {7, 8}, 
                                {9, 10}, 
                                {11, 12}
                            }
                        };

    // To'g'ri indeks bilan qiymatlarni ko'rsatish.
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 3; ++j) {
            for (int k = 0; k < 2; ++k) {
                cout << "test[" << i << "][" << j << "][" << k << "] = " << test[i][j][k] << endl;
            }
        }
    }

    return 0;
}

Chiqish

kod
test[0][0][0] = 1
test[0][0][1] = 2
test[0][1][0] = 3
test[0][1][1] = 4
test[0][2][0] = 5
test[0][2][1] = 6
test[1][0][0] = 7
test[1][0][1] = 8
test[1][1][0] = 9
test[1][1][1] = 10
test[1][2][0] = 11
test[1][2][1] = 12

3d massiv elementlarini chop etishning asosiy tushunchasi 2d massivga o'xshaydi.

Biroq, biz 3 o'lchovni boshqarayotganimiz sababli, biz 2 ta o'rniga 3 ta jami siklga ega bo'lgan ichki ko'chadan foydalanamiz:

  • i == 0 dan i == 1 gacha bo'lgan tashqi sikl massivning birinchi o'lchamiga kiradi
  • j == 0 dan j == 2 gacha bo'lgan o'rta sikl massivning ikkinchi o'lchamiga kiradi
  • k == 0 dan k == 1 gacha bo'lgan eng ichki sikl massivning uchinchi o'lchamiga kiradi

Ko'rib turganimizdek, massivning murakkabligi o'lchamlarning oshishi bilan eksponent ravishda ortadi.

Shuningdek o'qing:

-C++ Program to Add Two Matrix Using Multi-dimensional Arrays -C++ Program to Multiply Two Matrix Using Multi-dimensional Arrays