Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

Matrizes multidimensionais C++

Matrizes multidimensionais C++


Neste tutorial, aprenderemos sobre arrays multidimensionais em C++. Mais especificamente, como declará-los, acessá-los e usá-los de forma eficiente em nosso programa.

Em C++, podemos criar um array de um array, conhecido como array multidimensional. Por exemplo:

int x[3][4];

Aqui, x é uma matriz bidimensional. Pode conter um máximo de 12 elementos.

Podemos pensar neste array como uma tabela com 3 linhas e cada linha tem 4 colunas como mostrado abaixo.

As matrizes tridimensionais também funcionam de maneira semelhante. Por exemplo:
float x[2][4][3];

Esta matriz x pode conter um máximo de 24 elementos.

Podemos descobrir o número total de elementos na matriz simplesmente multiplicando suas dimensões:
2 x 4 x 3 = 24

Inicialização de matriz multidimensional


Como um array normal, podemos inicializar um array multidimensional de mais de uma maneira.

1. Inicialização do array bidimensional

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

O método acima não é o preferido. Uma maneira melhor de inicializar esta matriz com os mesmos elementos da matriz é fornecida abaixo:
int  test[2][3] = { {2, 4, 5}, {9, 0, 19}};

Esta matriz tem 2 linhas e 3 colunas, e é por isso que temos duas linhas de elementos com 3 elementos cada.

2. Inicialização do array tridimensional

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};

Esta não é uma boa maneira de inicializar uma matriz tridimensional. Uma maneira melhor de inicializar esse array é:
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} }
                 };

Observe as dimensões dessa matriz tridimensional.

A primeira dimensão tem o valor 2 . Assim, os dois elementos que compõem a primeira dimensão são:
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} }

A segunda dimensão tem o valor 3 . Observe que cada um dos elementos da primeira dimensão tem três elementos cada:
{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.

Finalmente, há quatro int números dentro de cada um dos elementos da segunda dimensão:
{3, 4, 2, 3}
{0, -3, 9, 11}
... .. ...
... .. ...

Exemplo 1:matriz bidimensional

// C++ Program to display all elements
// of an initialised two dimensional array

#include <iostream>
using namespace std;

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

    // use of nested for loop
    // access rows of the array
    for (int i = 0; i < 3; ++i) {

        // access columns of the array
        for (int j = 0; j < 2; ++j) {
            cout << "test[" << i << "][" << j << "] = " << test[i][j] << endl;
        }
    }

    return 0;
}

Saída
test[0][0] = 2
test[0][1] = -5
test[1][0] = 4
test[1][1] = 0
test[2][0] = 9
test[2][1] = 1



No exemplo acima, inicializamos um int bidimensional array chamado test que tem 3 "linhas" e 2 "colunas".

Aqui, usamos o for aninhado loop para exibir os elementos da matriz.
  • o loop externo de i == 0 para i == 2 acessar as linhas do array
  • o loop interno de j == 0 para j == 1 acessar as colunas do array

Finalmente, imprimimos os elementos do array em cada iteração.

Exemplo 2:como obter entrada para matriz bidimensional

#include <iostream>
using namespace std;

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

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

    // Storing user input in the array
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 3; ++j) {
            cin >> numbers[i][j];
        }
    }

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

    //  Printing array elements
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 3; ++j) {
            cout << "numbers[" << i << "][" << j << "]: " << numbers[i][j] << endl;
        }
    }

    return 0;
}

Saída
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

Aqui, usamos um for aninhado loop para receber a entrada do array 2d. Depois que toda a entrada foi obtida, usamos outro for aninhado loop para imprimir os membros da matriz.

Exemplo 3:Matriz tridimensional

// C++ Program to Store value entered by user in
// three dimensional array and display it.

#include <iostream>
using namespace std;

int main() {
    // This array can store upto 12 elements (2x3x2)
    int test[2][3][2] = {
                            {
                                {1, 2},
                                {3, 4},
                                {5, 6}
                            }, 
                            {
                                {7, 8}, 
                                {9, 10}, 
                                {11, 12}
                            }
                        };

    // Displaying the values with proper index.
    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;
}

Saída
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

O conceito básico de elementos de impressão de uma matriz 3D é semelhante ao de uma matriz 2D.

No entanto, como estamos manipulando 3 dimensões, usamos um loop for aninhado com 3 loops totais em vez de apenas 2:
  • o loop externo de i == 0 para i == 1 acessa a primeira dimensão da matriz
  • o loop do meio de j == 0 para j == 2 acessa a segunda dimensão da matriz
  • o loop mais interno de k == 0 para k == 1 acessa a terceira dimensão da matriz

Como podemos ver, a complexidade do array aumenta exponencialmente com o aumento das dimensões.

Linguagem C

  1. Matrizes C#
  2. Matriz multidimensional C#
  3. Matriz irregular em C#
  4. Operadores C++
  5. Comentários C++
  6. Passando array para uma função na programação C++
  7. Copiar Matrizes Java
  8. Matrizes em C++ | Declare | Inicializar | Ponteiro para exemplos de matriz
  9. Alocação dinâmica de matrizes em C++ com exemplo
  10. MATLAB - Matrizes