Ajude nosso projeto a se manter online.

Matriz em C++ : Array de Arrays

Neste tutorial de nosso Curso de C++, vamos aprender o importante conceito de matriz em C++.

Array de Arrays - O que é? Para que serve?

Até o momento, em nossa seção de arrays, criamos arrays de inteiros, float, doubles, char etc.
Ou seja, criamos arrays que armazenam números ou caracteres.
Porém, também é possível armazenar outras coisas em arrays.

Uma coisa curiosa de se armazenar em arrays, são outros arrays.

Por exemplo, imagine que você foi contratado por uma escola para fazer um programa em C++ que vai, dentre outras coisas, armazenar as notas dos alunos. Cada aluno tem, por exemplo, 5 notas diferentes.

Você pode, antes de tudo, raciocinar assim: criar um array para armazenar os alunos.
Por exemplo: alunos[10]

Porém, cada aluno tem 5 notas. Então cada aluno desses vai ter um array de notas:
notas[5]

Veja bem: temos um array de alunos, cada bloco representa um aluno. E dentro de cada bloco, ou seja, de cada aluno, tem uma espécie de array interno, com as notas de cada aluno. Cada aluno tem seu array de notas, e cada aluno faz parte do array de alunos.

Vamos formalizar isso?

Como declarar uma Matriz em C++

Chamamos pelo nome de matriz, um array de arrays, ou arrays multidimensionais.
Até o momento, trabalhamos apenas com arrays de uma dimensão, só uma 'linha' de bloquinhos, que formam um array.

Para aumentarmos o número de dimensões de um array, basta irmos acrescentando pares de colchetes, por exemplo:

  • Para declarar um array de uma dimensão, fazemos: float grade[5];
  • Para declarar um array de duas dimensões, fazemos: float students[10][5];


Vamos lá. Quando fazemos 'float grade[5]' queremos dizer: 5 bloquinhos de float.
Quando fazemos: 'float students[10][5]', queremos dizer: 10 bloquinhos, onde cada bloquinho desses tem um array dentro, de 5 floats.
Dizemos que essa é uma matriz 10x5 (10 linhas e 5 colunas, onde cada linha representa um aluno, e cada coluna representa uma nota diferente).

Para facilitar, vamos imaginar uma matriz 3x3, declaramos assim:

  • int matrix[3][3];


A expressão 'matrix[3]' quer dizer: um array de 3 elementos.
O que contém cada elemento? Um inteiro? Um float? Um char? Não, cada elemento é um outro array, de tamanho [3].

Veja como fica a representação dessa matriz:
Array de arrays em C++

O primeiro elemento de nossa matriz é: matrix[0]
Ele é um array, de 3 elementos, que são representados por:
Primeiro elemento: matrix[0][0]
Segundo elemento: matrix[0][1]
Terceiro elemento : matrix[0][2]

O segundo elemento de nossa matriz é: matrix[1]
Ele é um array, de 3 elementos, que são representados por:
Primeiro elemento: matrix[1][0]
Segundo elemento: matrix[1][1]
Terceiro elemento : matrix[1][2]

O terceiro elemento de nossa matriz é: matrix[2]
Ele é um array, de 3 elementos, que são representados por:
Primeiro elemento: matrix[2][0]
Segundo elemento: matrix[2][1]
Terceiro elemento : matrix[2][2]

Ou seja, para declaramos uma matriz de 'i' linhas e 'j' colunas, fazemos:

  • tipo matrix[i][j];

Se você já estudou matriz e determinantes, na escola, deve se lembrar de como se usa uma matriz, como sinalizar cada elemento etc. Aqui, a única diferença é que a contagem começa do índice 0, ao invés de 1.

Como inicializar uma Matriz em C++

Vamos criar uma matriz para armazenar as notas de 3 alunos, onde cada aluno tem duas notas.
Ou seja, teremos uma matriz de 3 linhas (uma para cada aluno) e 2 colunas (cada coluna representa uma nota). Declaramos essa matriz, então:

  • float grade[3][2];


Vamos agora inicializar essa matriz com as notas:
float grade[3][3] = { {9.5, 9.1},
                                  {8.8, 8.4},
                                  {10.0, 10.0} };

O array de notas do primeiro aluno é: {9.5, 9.1}
O array de notas do segundo aluno é: {8.8, 8.4}
O array de notas do terceiro aluno é : {10.0, 10.0}

Por exemplo, qual a primeira nota do segundo aluno? Segundo aluno é o aluno 1, primeira nota é a de índice 0, então essa nota está armazenada em: grade[1][0] = 8.8
Já a segunda nota do segundo aluno é: grade[1][1] = 8.4

Simples, não?

Nenhum comentário:

Postar um comentário