# Kuinka luoda ja käyttää 2D-taulukkoa C++-kielellä

C++-kielessä voit käyttää kaksiulotteisia taulukoita järjestämään tiedot taulukkomuotoisesti. Matematiikassa, erityisesti lineaarialgebraassa, 2D-taulukot tarjoavat optimaalisen rakenteen **matriisien** esittämiseen.

## Mikä on 2D-taulukko C++-kielessä?

C++-kielessä 2D-taulukko on tietorakenne, joka järjestää elementit **kaksiulotteiseen, taulukkomuotoiseen muotoon**. Toisin kuin yksiulotteiset taulukot, jotka tallentavat elementit yksinkertaisesti järjestyksessä, 2D-taulukko järjestää tiedot riveiksi ja sarakkeiksi. Jokainen 2D-taulukon elementti tunnistetaan sen rivi- ja sarakkeindeksien avulla, mikä helpottaa yksittäisten datapisteiden käyttöä ja käsittelyä. Tämän tyyppisellä taulukolla on useita käyttötarkoituksia matriiseja sisältävistä matemaattisista operaatioista rasteritietojen käsittelyyn.

## Miten 2D-taulukko on rakennettu C++-kielessä?

C++-kielessä 2D-taulukoiden määrittelyn syntaksi koostuu seuraavista elementeistä:

```c++
data_type arrayName[num_rows][num_cols];
```

- **`data_type`**: Tietotyyppi määrittää 2D-taulukkoon tallennettavan datan tyypin. Se voi olla esimerkiksi `int` kokonaisluvuille, `double` liukuluvuille tai käyttäjän määrittämille tietotyypeille.
- **`arrayName`**: Nimi toimii tunnisteena, jota voit käyttää koko taulukon käyttämiseen.
- **`num_rows`**: Tämä syntaksin osa määrittää, kuinka monta riviä 2D-taulukossa on.
- **`num_cols`**: Tässä määrität 2D-taulukon kunkin rivin sarakkeiden lukumäärän.

Alla olevassa esimerkissä määritellään 2D-taulukko nimeltä `matrix`. Se koostuu 3 rivistä ja 4 sarakkeesta ja sisältää yhteensä 12 elementtiä.

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

### Kuinka tulostaa 2D-taulukko C++-kielellä

Voit tulostaa 2D-taulukon **for-silmukan** avulla. Ulompi silmukka iteroi rivit, kun taas sisempi silmukka iteroi kunkin rivin sarakkeet. Lauseke `std::cout << matrix[i][j] << " ";` näyttää kunkin elementin. Jokaisen rivin jälkeen luomme uuden rivin käyttämällä `std::cout << std::endl;`. Tämä varmistaa paremman muodon tulosteelle.

```c++
#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;
}
```

2D-taulukon elementit näytetään tulosteessa rivi riviltä:

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

## Esimerkkejä kaksiulotteisten taulukoiden käytöstä C++-kielessä

C++-kielellä ohjelmointi tarkoittaa, että joudut ennemmin tai myöhemmin työskentelemään taulukoiden kanssa. Seuraavassa osassa esittelemme tyypillisiä sovelluksia 2D-taulukoille C++-kielellä.

### 2D-taulukot käyttäjän syötteillä

Tässä on yksinkertainen C++-esimerkki, jossa käyttäjä voi määritellä 2D-taulukon dynaamisesti. Ensin pyydämme käyttäjää syöttämään rivien ja sarakkeiden lukumäärän, minkä jälkeen syötetään taulukon elementit.

```c++
#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;
}
```

Jos käyttäjän syöttöinä annetaan `2` riviä ja `3` saraketta sekä arvot `1, 2, 3, 4, 5, 6`, 2D-taulukko on seuraava:

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

### Matriisien lisääminen 2D-taulukoilla

C-operaattoreilla, kuten `+`, voimme helposti lisätä matriiseja C++:ssa käyttämällä 2D-taulukoita.

```c++
#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;
}
```

Ensin luomme kaksi `2x2` matriisia, `A` ja `B`. Sitten laskemme niiden summan, joka näytetään tuloksena olevassa matriisissa. `matrixAddition` funktio hyväksyy kaksi alkuperäistä matriisia ja tuloksena olevan matriisin parametreina ja suorittaa yhteenlaskun. `displayMatrix` funktio näyttää sitten matriisien A ja B summan konsolissa.

Tässä on tulos:

```c++
Matrix A:
1 2
3 4
Matrix B:
5 6
7 8
Sum (A + B):
6 8
10 12
```


This is a markdown version of: [https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/2d-taulukot-c-kielessae/](https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/2d-taulukot-c-kielessae/) for AI/LLM consumption.