Matrizes C ++ Multidimensionais (matrizes 2ª e 3ª)

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 no máximo 12 elementos.

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

Elementos em array bidimensional na programação C ++

Os arrays tridimensionais também funcionam de maneira semelhante. Por exemplo:

 float x(2)(4)(3);

Este array x pode conter no máximo 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 array multidimensional

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

1. Inicialização de matriz 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));

Este array possui 2 linhas e 3 colunas, por isso temos duas linhas de elementos com 3 elementos cada.

Inicializando uma matriz bidimensional em C ++

2. Inicialização da matriz 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);

Essa não é uma boa maneira de inicializar um array tridimensional. A melhor maneira de inicializar esta matriz é:

 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 desta matriz tridimensional.

A primeira dimensão tem o valor 2. Portanto, os dois elementos que constituem a primeira dimensão são:

 Elemento 1 = ((3, 4, 2, 3), (0, -3, 9, 11), (23, 12, 23, 2)) Elemento 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) e (23, 12, 23, 2) para o Elemento 1. (13, 4, 56, 3), (5, 9, 3 , 5) e (5, 1, 4, 9) para o Elemento 2.

Finalmente, existem quatro intnú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 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; )

Resultado

 teste (0) (0) = 2 teste (0) (1) = -5 teste (1) (0) = 4 teste (1) (1) = 0 teste (2) (0) = 9 teste (2) (1) = 1

No exemplo acima, inicializamos um intarray bidimensional denominado test que possui 3 "linhas" e 2 "colunas".

Aqui, usamos o forloop aninhado para exibir os elementos do array.

  • o loop externo de i == 0para i == 2acessar as linhas da matriz
  • o loop interno de j == 0para j == 1acessar as colunas da matriz

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

Exemplo 2: Obtendo entrada para matriz bidimensional

 #include 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 > 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; )

Resultado

 Digite 6 números: 1 2 3 4 5 6 Os números são: números (0) (0): 1 números (0) (1): 2 números (0) (2): 3 números (1) (0): 4 números (1) (1): 5 números (1) (2): 6

Aqui, usamos um forloop aninhado para obter a entrada do array 2d. Depois que todas as entradas foram obtidas, usamos outro forloop aninhado para imprimir os membros do array.

Exemplo 3: Matriz Tridimensional

 // C++ Program to Store value entered by user in // three dimensional array and display it. #include 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; )

Resultado

 teste (0) (0) (0) = 1 teste (0) (0) (1) = 2 teste (0) (1) (0) = 3 teste (0) (1) (1) = 4 teste ( 0) (2) (0) = 5 teste (0) (2) (1) = 6 teste (1) (0) (0) = 7 teste (1) (0) (1) = 8 teste (1) (1) (0) = 9 teste (1) (1) (1) = 10 teste (1) (2) (0) = 11 teste (1) (2) (1) = 12

O conceito básico de impressão de elementos 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 == 0para i == 1acessa a primeira dimensão da matriz
  • o loop do meio de j == 0para j == 2acessa a segunda dimensão da matriz
  • o loop mais interno de k == 0para k == 1acessa a terceira dimensão da matriz

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

Artigos interessantes...