V C++ lahko uporabite dvo­di­men­zi­o­nal­ne matrike za or­ga­ni­za­ci­jo podatkov v obliki tabele. V ma­te­ma­ti­ki, zlasti v linearni algebri, 2D matrike za­go­ta­vlja­jo optimalno strukturo za pred­sta­vi­tev matrik.

Kaj je 2D matrika v C++?

V C++ je 2D-matrika po­dat­kov­na struktura, ki elemente razporedi v dvo­di­men­zi­o­nal­ni, ta­be­la­rič­ni format. Za razliko od eno­di­men­zi­o­nal­nih matrik, ki elemente preprosto shra­nju­je­jo v zaporedju, 2D-matrika podatke or­ga­ni­zi­ra v vrstice in stolpce. Vsak element v 2D-matriki je iden­ti­fi­ci­ran s svojim indeksom vrstice in stolpca, kar olajša dostop do po­sa­me­znih po­dat­kov­nih točk in njihovo ma­ni­pu­la­ci­jo. Od ma­te­ma­tič­nih operacij z matrikami do obdelave rastrskih podatkov obstajajo različne uporabe za to vrsto matrike.

Kako je struk­tu­ri­ran 2D niz v C++?

V C++ je sintaksa za de­kla­ra­ci­jo 2D-nizov se­sta­vlje­na iz na­sle­dnjih elementov:

data_type arrayName[num_rows][num_cols];
c++
  • data_type: Tip podatkov določa tip podatkov, ki naj bi bili shranjeni v 2D-matrici. To je lahko na primer int za cela števila, double za števila s plavajočo vejico ali upo­rab­ni­ško de­fi­ni­ra­ni tipi podatkov.
  • arrayName: Ime deluje kot iden­ti­fi­ka­tor, ki ga lahko uporabite za dostop do celotnega niza.
  • num_rows: Ta del sintakse določa, koliko vrstic naj ima 2D-niz.
  • num_cols: Tukaj določite število stolpcev za vsako vrstico v 2D nizu.

V spodnjem primeru bomo de­fi­ni­ra­li 2D matriko z imenom matrix. Sestoji iz 3 vrstic in 4 stolpcev ter ima skupaj 12 elementov.

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

Kako izpisati 2D matriko v C++

2D matriko lahko izpišete z uporabo zanke for. Zunanja zanka ponavlja vrstice, notranja zanka pa stolpce vsake vrstice. Izjava std::cout << matrix[i][j] << " "; prikaže vsak element. Po vsaki vrstici bomo ustvarili novo vrstico z uporabo std::cout << std::endl;. To za­go­ta­vlja boljšo obliko izpisa.

#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++

Elementi 2D matrike so v izhodu prikazani po vrsticah:

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

Primeri uporabe dvo­di­men­zi­o­nal­nih matrik v C++

Pro­gra­mi­ra­nje v jeziku C++ pomeni, da boste prej ali slej delali z nizi. V na­sle­dnjem poglavju vam bomo pokazali tipične uporabe 2D nizov v jeziku C++.

2D matrike z upo­rab­ni­škim vnosom

Tukaj je preprost primer v C++, kjer upo­rab­ni­ku omogočimo dinamično de­fi­ni­ra­nje 2D matrike. Najprej upo­rab­ni­ka prosimo, naj vnese število vrstic in stolpcev, nato pa elemente matrike.

#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++

Če se kot upo­rab­ni­ški vnos prenesejo 2 vrstic in 3 stolpcev ter vrednosti 1, 2, 3, 4, 5, 6, bo 2D matrika naslednja:

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

Se­šte­va­nje matrik z 2D-matrikami

Z ope­ra­ter­ji C, kot je +, lahko v C++ enostavno dodajamo matrike z uporabo 2D-nizov.

#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++

Najprej ustvarimo dve 2x2 matrici, A in B. Nato iz­ra­ču­na­mo njihovo vsoto, ki bo prikazana v končni matrici. Funkcija matrixAddition sprejme dve začetni matrici in končno matrico kot parametre in izvede se­šte­va­nje. Funkcija displayMatrix nato prikaže vsoto matric A in B na konzoli.

Tukaj je izhod:

Matrix A:
1 2
3 4
Matrix B:
5 6
7 8
Sum (A + B):
6 8
10 12
c++
Go to Main Menu