V jazyku C++ môžete použiť dvojrozmerné polia na usporiadanie údajov do tabuľky. V matematike, najmä v lineárnej algebre, poskytujú 2D polia optimálnu štruktúru na reprezentáciu matíc.

Čo je to 2D pole v C++?

V jazyku C++ je 2D pole dátová štruktúra, ktorá usporadúva prvky v dvojrozmernom formáte podobnom tabuľke. Na rozdiel od jednorozmerných polí, ktoré jednoducho ukladajú prvky v sekvencii, 2D pole organizuje dáta do riadkov a stĺpcov. Každý prvok v 2D poli je identifikovaný indexom riadku a stĺpca, čo uľahčuje prístup a manipuláciu s jednotlivými dátovými bodmi. Od matematických operácií s maticami až po spracovanie rastrových dát existuje mnoho rôznych použití pre tento typ poľa.

Ako je štruktúrované 2D pole v C++?

V jazyku C++ sa syntax pre deklarovanie 2D polí skladá z nasledujúcich prvkov:

data_type arrayName[num_rows][num_cols];
c++
  • data_type: Typ údajov určuje typ údajov, ktoré by mali byť uložené v 2D poli. Môže to byť napríklad int pre celé čísla, double pre čísla s pohyblivou desatinnou čiarkou alebo užívateľsky definované typy údajov.
  • arrayName: Názov slúži ako identifikátor, ktorý môžete použiť na prístup k celému poľu.
  • num_rows: Táto časť syntaxe určuje, koľko riadkov by malo mať 2D pole.
  • num_cols: Tu špecifikujete počet stĺpcov pre každý riadok v 2D poli.

V nasledujúcom príklade definujeme 2D pole s názvom matrix. Skladá sa z 3 riadkov a 4 stĺpcov a má celkom 12 prvkov.

int matrix[3][4] = {{1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}};
c++

Ako vygenerovať 2D pole v C++

2D pole môžete vygenerovať pomocou cyklu for. Vonkajší cyklus iteruje nad riadkami, zatiaľ čo vnútorný cyklus iteruje nad stĺpcami každého riadku. Inštrukcia std::cout << matrix[i][j] << " "; zobrazuje každý prvok. Po každom riadku vytvoríme nový riadok pomocou std::cout << std::endl;. Tým zabezpečíme lepší formát výstupu.

#include <iostream>
int main() {
    int matrix[3][4] = {{1, 2, 3, 4},
                        {5, 6, 7, 8},
                        {9, 10, 11, 12}};
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 4; ++j) {
            std::cout << matrix[i][j] << " ";
        }
 
        std::cout << std::endl;
    }
    return 0;
}
c++

Prvky 2D poľa sa vo výstupe zobrazujú po riadkoch:

1 2 3 4
5 6 7 8
9 10 11 12
c++

Príklady použitia dvojrozmerných polí v jazyku C++

Programovanie v jazyku C++ znamená, že skôr či neskôr budete pracovať s polami. V nasledujúcej časti vám ukážeme typické použitie 2D polí v jazyku C++.

2D polia s užívateľským vstupom

Tu je jednoduchý príklad v jazyku C++, kde necháme používateľa dynamicky definovať 2D pole. Najskôr požiadame používateľa, aby zadal počet riadkov a stĺpcov, a potom prvky poľa.

#include <iostream>
int main() {
    int numRows, numCols;
    std::cout << "Number of rows: ";
    std::cin >> numRows;
    std::cout << "Number of columns: ";
    std::cin >> numCols;
    int userArray[numRows][numCols];
    std::cout << "Please enter in elements:\n";
    for (int i = 0; i < numRows; ++i) {
        for (int j = 0; j < numCols; ++j) {
            std::cout << "Element [" << i << "][" << j << "]: ";
            std::cin >> userArray[i][j];
        }
    }
    std::cout << "2D array:\n";
    for (int i = 0; i < numRows; ++i) {
        for (int j = 0; j < numCols; ++j) {
            std::cout << userArray[i][j] << " ";
        }
        std::cout << std::endl;
    }
    return 0;
}
c++

Ak sa ako užívateľský vstup zadá 2 riadkov a 3 stĺpcov a hodnoty 1, 2, 3, 4, 5, 6, 2D pole bude:

2D array:
1 2 3
4 5 6
c++

Sčítanie matíc s 2D polami

S operátormi C, ako je +, môžeme v C++ ľahko sčítať matice pomocou 2D polí.

#include <iostream>
const int numRows = 2; 
const int numCols = 2; 
void matrixAddition(int A[][numCols], int B[][numCols], int result[][numCols]) {
    for (int i = 0; i < numRows; ++i) {
        for (int j = 0; j < numCols; ++j) {
            result[i][j] = A[i][j] + B[i][j];
        }
    }
}
void displayMatrix(int matrix[][numCols]) {
    for (int i = 0; i < numRows; ++i) {
        for (int j = 0; j < numCols; ++j) {
            std::cout << matrix[i][j] << " ";
        }
        std::cout << std::endl;
    }
}
int main() {
    int matrixA[numRows][numCols] = {{1, 2}, {3, 4}};
    int matrixB[numRows][numCols] = {{5, 6}, {7, 8}};
    int resultMatrix[numRows][numCols];
    matrixAddition(matrixA, matrixB, resultMatrix);
    // Output of matrix A and B and their sum
    std::cout << "Matrix A:\n";
    displayMatrix(matrixA);
    std::cout << "\nMatrix B:\n";
    displayMatrix(matrixB);
    std::cout << "\nSum (A + B):\n";
    displayMatrix(resultMatrix);
    return 0;
}
c++

Najskôr vytvoríme dve matice 2x2, A a B. Potom vypočítame ich súčet, ktorý sa zobrazí v výslednej matici. Funkcia matrixAddition prijíma ako parametre dve počiatočné matice a výslednú maticu a vykoná sčítanie. Funkcia displayMatrix potom zobrazí súčet matíc A a B na konzole.

Tu je výstup:

Matrix A:
1 2
3 4
Matrix B:
5 6
7 8
Sum (A + B):
6 8
10 12
c++
Prejsť na hlavné menu