Масиви. Частина 2. Двовимірні та багатовимірні масиви




Двовимірні та багатовимірні масиви



Пошук на інших ресурсах:

1. Які масиви називаються двовимірними та багатовимірними?

Загальні відомості про масиви та використання одновимірних масивів детально описуються тут.

Масив вважається двовимірним, якщо для визначення місцеположення елементу в масиві потрібно вказати значення двох індексів. Двовимірний масив асоціюється з таблицею. Якщо кількість стовпців і рядків масиву (таблиці) однакова, то масив ще називають матрицею.

Масив вважається багатовимірним, якщо для визначення місцеположення елементу в масиві потрібно вказати значення трьох і більше індексів.

2. Приклад опису та використання двовимірних масивів в програмі
// матриця цілих чисел розміром 3*4
int Matr[][];
Matr = new int[3][4];

// заповнення комірок матриці
Matr[0][2] = 23;
Matr[0][0] = -220;
Matr[2][3] = 380;

// матриця дійсних чисел розміром 2*3
float[][] MatrF = new float[2][3];

MatrF[0][2] = 9.88f;
MatrF[0][0] = -33.8329f;

3. Приклад опису двовимірного масиву альтернативними варіантами

В Java двовимірний масив можна описувати різними способами. У даному прикладі показано різні варіанти опису двовимірного масиву цілих чисел розміром 2×3.

Варіант 1.

// оголошення матриці розміром 2*3
int[] Matr[] = new int[2][3];

Варіант 2.

int[][] Matr = new int[2][3];

Варіант 3.

int[][] Matr = new int[2][3];

Варіант 4.

int[][] Matr;
Matr = new int[2][3];

Варіант 5.

int[] Matr[];
Matr = new int[2][3];

Варіант 6.

int Matr[][];
Matr = new int[2][3];

Варіант 7.

int Matr[][] = new int[2][];
Matr[0] = new int[3];
Matr[1] = new int[3];

Варіант 8.

int[][] Matr = new int[2][];
Matr[0] = new int[3];
Matr[1] = new int[3];

Варіант 9.

int[] Matr[] = new int[2][];
Matr[0] = new int[3];
Matr[1] = new int[3];

4. Як здійснюється ініціалізація двовимірного масиву? Приклад

Щоб здійснити ініціалізацію двовимірного масиву потрібно ініціалізатор кожного виміру взяти в окремий ряд фігурних дужок.

У наступному прикладі оголошується двовимірний масив дійсних чисел з іменем X. Розмір масиву 2×3.

// ініціалізація двовимірного масиву розміром 2*3
float X[][] = { { 0.1f, 0.3f, 1.2f },
                { 1.3f, 2.8f, 3.2f } };


5. Приклад оголошення двовимірного масиву, з різною кількістю елементів в одному рядку (різною розмірністю другого виміру).

У даному прикладі оголошується двовимірний масив, в якому кількість елементів у кожному рядку є різною. Потім цей масив заповнюється значеннями як показано на рисунку.

Рисунок. Масив, згідно з умовою задачі

// оголошення масиву, в якому
// 3 рядки з різною розмірністю другого виміру
long M[][] = new long[3][];

M[0] = new long[2]; // 2 елементи в нульовому рядку
M[1] = new long[4]; // 4 елементи в першому рядку
M[2] = new long[3]; // 3 елементи в другому рядку

M[0][0] = 10l;
M[0][1] = 350l;
M[1][0] = 25l;
M[1][1] = 45l;
M[1][2] = 85l;
M[1][3] = 1200l;
M[2][0] = 55l;
M[2][1] = 450l;
M[2][2] = 2500l;

6. Приклад оголошення багатовимірних масивів

Багатовимірні масиви використовують 3 і більше індексів для доступу до елементів масиву.

// оголошення масиву розміром 3*2*4
int M[][][] = new int[3][2][4];

// використання масиву
M[1][1][2] = 23;
M[0][0][1] = -12;

// оголошення масиву розміром 5*10*15
double[][][] D;
D = new double[5][10][15];
D[3][7][11] = -29.33;

7. Приклад ініціалізації багатовимірного масиву.

У даному прикладі ініціалізується масив розміром 2×3×3.

// ініціалізація масиву розміром 2*3*3
byte B[][][] = {
                   {
                       { 0, 1, 2 },
                       { 1, 2, 3 },
                       { 3, 4, 5 }
                   },
                   {
                       { 1, 2, 3 },
                       { 2, 3, 4 },
                       { 5, 6, 7 }
                   }
               };

8. Приклад занулення двовимірної матриці дійсних чисел розміром 5×5
// занулити матрицю розміром 5*5
double Matrix[][] = new double[5][5];

for (int i=0; i<5; i++)
    for (int j=0; j<Matrix[i].length; j++)
        Matrix[i][j]=0.0;


9. Приклад пошуку заданого елементу в матриці цілих чисел розміром 10×10
// пошук елементу в матриці
short Matrix[][] = new short[10][10];
boolean f_is;
short num; // шуканий елемент

// ввід значення num
// ...

f_is = false; // спочатку приймаємо, що елементу немає в матриці

for (int i=0; i<10; i++)
    for (int j=0; j<Matrix[i].length; j++)
        if (Matrix[i][j]==num)
            f_is = true; // елемент знайдено

10. Приклад пошуку максимального значення в матриці дійсних чисел
// пошук максимуму в матриці
float Matrix[][] = new float[10][10];
float max; // шукане максимальне значення

// ...

max = Matrix[0][0]; // прийняти, що max - один з елементів матриці

for (int i=0; i<10; i++)
    for (int j=0; j<Matrix[i].length; j++)
        if (Matrix[i][j]>max)
            max = Matrix[i][j];

11. Приклад обчислення суми елементів двовимірної матриці дійсних чисел
// сума елементів матриці
float Matrix[][] = new float[10][10];
float sum; // шукана сума

// ...

sum = 0;

for (int i=0; i<10; i++)
    for (int j=0; j<Matrix[i].length; j++)
        sum = sum + Matrix[i][j];





12. Приклад оголошення та використання двовимірного масиву рядків

У мові Java для роботи з рядками введено спеціальний клас String. У даному прикладі наведено різні варіанти оголошення, ініціалізації та використання двовимірного масиву рядків.

// оголошення двовимірного масиву рядків
String M1[][] = new String[5][5]; // створення змінної типу масив

// запис інформації в масив рядків
for (int i=0; i<5; i++)
    for (int j=0; j<M1[i].length; j++)
        M1[i][j] = "Item #" + i + j;

// глибоке копіювання масивів з допомогою методу clone()
String M2[][] = M1.clone(); // масиви M1 і M2 вказують на різні ділянки пам'яті

// оголошення та ініціалізація масиву рядків розміром 3*3
String M3[][] = {
                    { "Item-00", "Item-01", "Item-02" },
                    { "Item-10", "Item-11", "Item-12" },
                    { "Item-20", "Item-21", "Item-22" }
                };

// поверхневе копіювання
String M4[][]; // опис змінної типу двовимірний масив рядків
M4 = M1; // масиви M1 і M4 вказують на одну й ту ж ділянку пам'яті

// зміна в масиві M1 призведе до зміни в масиві M4 і навпаки
M1[1][4] = "1111"; // M4[1][4] = "1111"
M4[1][4] = "2222"; // M1[1][4] = "2222"

13. Приклад оголошення та використання двовимірного масиву класів

У даному прикладі оголошено двовимірний масив класів розміром 3×4. Процес оголошення змінної відбувається в декілька етапів:

  • оголосити змінну типу двовимірний масив класу MyPoint;
  • виділити пам’ять під посилання на класи розміром 3×4;
  • виділити пам’ять під кожен елемент масиву, що є класом.
// оголошення змінної mp типу двовимірний масив
MyPoint[][] mp;

// виділення пам'яті для масиву класів розміром 3*4
mp = new MyPoint[3][4];

// виділення пам'яті для кожного елементу масиву (класу)
for (int i=0; i<3; i++)
    for (int j=0; j<mp[i].length; j++)
        mp[i][j] = new MyPoint();

// використання масиву в програмі
for (int i=0; i<3; i++)
    for (int j=0; j<mp[i].length; j++)
        mp[i][j].SetXY(i, j);

int d;

d = mp[2][2].GetY(); // d = 2
d = mp[1][2].GetX(); // d = 1


Зв’язані теми