Introdução às matrizes 3D em C

Uma matriz é um grupo de elementos com o mesmo tipo de dados (homogêneo). Também é chamado de tipo de dados Derivado. Como já observado, uma matriz 3D aumenta o espaço exponencialmente e, uma posição extra adicionada para localizar o elemento na matriz. Neste tópico, vamos aprender sobre matrizes 3D em C.

Por exemplo, considere um edifício de 4 andares com muitos slots para estacionamento de bicicletas. Então, aqui para obter as direções perfeitas para os slots da bicicleta estacionada, precisamos informar o número do nível com o número da linha e da coluna. Quando você diz à matriz, a linha 7 e a coluna 4, que nível ela procura? Essa matriz 3D é apenas para armazenar mais quantidades de dados e representar as posições.

Como podemos defini-los e implementá-los? Indo além, vamos entender esses conceitos.

Sintaxe:

Em C, matrizes dimensionais podem ser declaradas da seguinte maneira:

Portanto, da mesma maneira, podemos declarar a matriz 3D como:

O significado da representação acima pode ser entendido como:

  1. A memória alocada para a variável c é do tipo de dados int.
  2. A capacidade total que essa matriz pode conter é 2 * 3 * 4, que é igual a 24 elementos.
  3. Os dados estão sendo representados na forma de 2 matrizes com 3 linhas e 4 colunas cada.
Colunas
Matriz c (0) Linhasc (0) (0)c (0) (1)c (0) (2)c (0) (3)
c (1) (0)c (1) (1)c (1) (2)c (1) (3)
c (2) (0)c (2) (1)c (2) (2)c (2) (3)
Colunas
c (1) Matriz Linhasc (0) (0)c (0) (1)c (0) (2)c (0) (3)
c (1) (0)c (1) (1)c (1) (2)c (1) (3)
c (2) (0)c (2) (1)c (2) (2)c (2) (3)

Os dados dentro da matriz podem ser acessados ​​através da representação acima. Na representação de matrizes 3D, o primeiro colchete representa o nível da matriz que deve ser considerado, o segundo seria o número de linhas e o terceiro é o número de colunas.

A representação de índice da matriz para o primeiro elemento sempre começa com zero e termina com tamanho-1. Portanto, por exemplo, se o número de linhas for 3, a representação do índice para acessar os dados nas linhas será 0, 1 e 2. A mesma lógica também se aplica aos índices de nível de matriz e coluna. Para a representação acima, para obter os dados do nível do array com a linha a coluna, podemos acessar por c (0) (1) (2).

Inicializando matrizes 3D em C

Podemos inicializar uma matriz 3D semelhante à matriz 2-D.

Como mencionado acima, o número total de elementos que podem ser ajustados à matriz seria arraysize1 * arraysize2 * arraysize3. Aqui está 2 * 4 * 3, o que dá 24.

Inserindo elementos:

Semelhante à matriz 2D, para inserir elementos em uma matriz 3D, precisamos inserir os dados em níveis, linhas e colunas. Então, para isso, usamos o conceito de loops. No processo acima para inicializar os dados na matriz, predefinimos os valores.

Aqui, os elementos podem ser inseridos dinamicamente pelo usuário, conforme os requisitos. Abaixo está um código de exemplo para inserir os elementos.

Código:

#include
int main()
(
int c(2)(4)(3);
int i, j, k;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
)

Conforme observado no código:

  1. Primeiro, estamos declarando a variável da matriz e as dimensões da matriz com o número de níveis da matriz, linhas e colunas.
  2. Em seguida, declaramos três variáveis ​​para iterar sobre os elementos da matriz.
  3. Então, para loops são usados. O primeiro loop é para a iteração dos níveis, o segundo é para as linhas e o terceiro é para as colunas.
  4. A função Scanf é usada para ler os dados conforme inserimos e, em seguida, coloque o valor inserido nas posições de i, j e k.

No exemplo acima, inserimos os dados em uma matriz com 2 níveis, 4 linhas e 3 colunas. A saída do seguinte pode ser obtida como abaixo:

Como não usamos a função printf para exibir a saída, o programa gravado apenas leu os valores inseridos pelo usuário. Depois de escrever a função de impressão (usando para loops), a saída seria exibida como:

Elementos de atualização:

A atualização dos elementos na matriz pode ser feita especificando um elemento específico a ser substituído ou identificando uma posição em que a substituição deve ser feita. Para atualizar, geralmente exigimos os seguintes detalhes.

  1. Elementos de uma matriz
  2. Posição / elemento, onde deve ser inserido
  3. O valor a ser inserido.

Para atualizar os dados em uma matriz por meio dos detalhes do elemento, primeiro precisamos procurar esse elemento na matriz, entender sua posição e depois substituir o elemento antigo pelo novo.

Aqui, fornecemos abaixo dois exemplos de atualização do elemento de uma matriz 3D.

Primeiramente, vamos dar um exemplo em que a posição do elemento a ser atualizado já é conhecida.

Código

#include
int main()
(
int c(2)(4)(3);
int i, j, k, num;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
c(1)(1)(1) = 85;
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
printf("\t%d", c(i)(j)(k));
)
printf("\n");
)
printf("\n");
)
return 0;
)

No programa acima, o elemento no nível, 1ª linha e 1ª coluna é selecionado e o valor dos dados nessa posição foi atualizado.

A saída acima é a seguinte:

No segundo exemplo, mostraremos como a posição do elemento pode ser tomada dinamicamente como um valor inserido pelo usuário e atualizar o valor do elemento nessa posição específica.

Código:

#include
int main()
(
int c(2)(4)(3);
int i, j, k, num;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
printf("Enter the level, row and column number: ");
scanf("%d %d %d", &i, &j, &k);
printf("Enter the new number you want to update with: ");
scanf("%d", &num);
c(i)(j)(k) = num;
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
printf("\t%d", c(i)(j)(k));
)
printf("\n");
)
printf("\n");
)
return 0;
)

A saída é a seguinte. Aqui, usamos a função scanf para ler o valor fornecido pelo usuário conforme sua escolha para a posição de um elemento com base no nível da matriz, linha e número de colunas.

Como exercício, você pode tentar escrever um programa para atualizar toda a coluna da matriz com valores inseridos pelo usuário?

Agora, como sabemos, na matriz 3D, declaramos o tamanho da matriz no início. Estamos cientes do tamanho da matriz, e se o usuário fornecer um número aleatório de linhas e colunas fora do tamanho da matriz?

E se introduzirmos mais elementos do que o necessário dentro da matriz?

Observe que, como não escrevemos nenhuma condição if / else ou blocos try / catch, a saída da matriz não muda. No entanto, podemos escrever o código usando as condições mencionadas acima para exibir erros para esses casos.

Como último exemplo, você não está curioso para saber o que acontece se pularmos alguns elementos no meio? O que meu programa faz?

Conforme observado na saída acima:

  1. Perdemos 4 valores na entrada, apenas dando espaço e pressionando enter
  2. Mas tínhamos esse escopo para inserir os 4 elementos restantes.
  3. Depois, especificamos o último nível, a última linha e o último elemento da coluna a serem alterados para 78. E a saída é como o esperado, não é?

Exclusão de elementos

Após os conceitos de inserção e atualização dos dados dentro da matriz 3D, vamos agora ver como podemos excluir uma linha inteira da matriz.

Escrevemos um programa em um formato simples para que o conceito de diferentes operações possa ser entendido facilmente.

Código:

#include
int main()
(
int c(2)(4)(3), i, j, k, num, x;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
printf("Enter the value of row number to delete: ");
scanf("%d", &x);
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
if(j==x)
(
for(k=0;k<3;k++)
(
if((j+1)<4)
(
printf("\t%d", c(i)(j+1)(k));
)

)
j ++;
)

outro
(
para (k = 0; k <3; k ++)
(
printf ("\ t% d", c (i) (j) (k));
)
)
printf ("\ n");
)
printf ("\ n");
)
)

Tomou os valores de uma matriz dinamicamente. As etapas a seguir são:

  1. Solicitou ao usuário para inserir o número (índice) da linha que deve ser excluída.
  2. Utilizando a iteração de loop de níveis, linhas e colunas da matriz. Estamos comparando se o número da linha e o número de entrada do usuário estão correspondendo ou não.
  3. Se eles corresponderem e se o número da linha for menor que o tamanho da matriz, estamos imprimindo a próxima linha. Senão, estamos imprimindo a linha como está.
  4. Aqui, como não tínhamos nenhuma condição no nível da matriz, o número da linha especificado é excluído dos dois níveis da matriz.

A saída é a seguinte:

E se, atribuirmos o número da linha fora do limite da matriz?

Ele não encontrará a linha para excluir e sair do programa imprimindo toda a matriz.

Como já se sabe, podemos até declarar os valores para o número de linhas e colunas dinamicamente e escrever o programa adequadamente.

Isso não parece simples e fácil de aprender?

Como exercício, você pode tentar excluir um elemento específico da matriz 3d agora?

Conclusão

Nesta seção, aprendemos as operações básicas em matrizes tridimensionais.

A matriz 3D contém muitos conjuntos de matrizes 2-D. Como vimos o tabuleiro de xadrez como um exemplo de uma matriz 2D, se tivéssemos colocado muitos tabuleiros de xadrez juntos, a matriz 3D pode nos ajudar a escolher primeiro o tabuleiro de xadrez com o qual você deseja jogar e depois procurar as linhas e colunas desse tabuleiro de xadrez.

Tente resolver as operações básicas das matrizes 3d e divirta-se aprendendo C.

Artigos recomendados

Este é um guia para matrizes 3D em C. Aqui discutimos a inicialização de uma matriz 3D semelhante à matriz 2D e aos elementos da matriz. Você também pode consultar o seguinte artigo para saber mais -

  1. Matrizes em R
  2. Tipos de dados no MATLAB
  3. Como criar matrizes em c #?
  4. Como matrizes 3D definidas em Java?
  5. Matrizes em PHP