Você está na página 1de 4

1

MATRIZES – Definição
São similares aos vetores, sendo compostas por linhas e colunas.

No exemplo a seguir é apresentada uma matriz chamada mat com 3 linhas e 6 colunas, contendo
números (elementos) do tipo real.

Declaração de Matriz – Sintaxe

tipo nomeDaMatriz[quantidadeDeLinhas][quantidadeDeColunas];

Acesso a Elemento de uma Matriz - Sintaxe

nomeDaMatriz[índiceDaLinha][índiceDaColuna]

Exemplos de acesso a elementos da matriz mat:


a) Para acessar o 3º elemento que está na 2ª linha: Resposta: mat[1][2], com valor 4.7
b) Para acessar o 1º elemento da 1ª linha: Resposta: mat[0][0], com valor 1.2
c) Qual o valor de mat[2][3]? Resposta: 9.6
d) Qual o valor de mat[3][0]? Resposta: Não existe, pois não há a quarta linha.
e) Qual o valor de mat[1][6]? Resposta: Não existe, pois não há a sétima coluna.

Varredura na matriz mat de linha a linha

Como posso fazer a entrada na matriz, preenchendo-a de linha a linha?

O código correspondente é o seguinte:

for (int iLin=0; iLin<3; iLin++) // iLin é o índice de linha


for(int iCol=0; iCol<6; iCol++) // iCol é o índice de coluna
cin >> mat[iLin][iCol];

Caso você não tenha entendido esse código, segue uma explicação...
2

1) Primeiro, se você não soubesse estrutura de repetição, como você faria a entrada na 1ª
linha?

Provavelmente, você faria o seguinte código:

cin >> mat[0][0];


cin >> mat[0][1];
cin >> mat[0][2];
cin >> mat[0][3];
cin >> mat[0][4];
cin >> mat[0][5];

2) Agora, suponha que você conheça o laço for, como você faria a entrada na 1ª linha?
Repare que o que varia é apenas o índice de coluna:

cin >> mat[0][0];


cin >> mat[0][1];
cin >> mat[0][2];
cin >> mat[0][3];
cin >> mat[0][4];
cin >> mat[0][5];

Provavelmente, você faria o seguinte código:

// Entrada na 1a linha da matriz


for(int iCol=0; iCol<6; iCol++)
cin >> mat[0][iCol];

3) Suponha que agora você queira realizar a entrada em todas as linhas de mat. O que você
faria se não soubesse laços aninhados? Provavelmente, você repetiria o for anterior 3
vezes, pois são 3 linhas, modificando apenas o índice da linha:

for(int iCol=0; iCol<6; iCol++)


cin >> mat[0][iCol];

for(int iCol=0; iCol<6; iCol++)


cin >> mat[1][iCol];

for(int iCol=0; iCol<6; iCol++)


cin >> mat[2][iCol];

4) Mas, e se houvesse 10, 100, 1000 linhas? Seria inviável repetir esses laços essa quantidade
de vezes. Assim, podemos generalizar nossa solução utilizando laços aninhados, ou seja,
um laço dentro de outro. Mas como assim, laços aninhados? Por que laços aninhados?
Verifique no código acima que os 3 laços for são praticamente idênticos, mudando apenas
o índice de linha a cada for. Assim, podemos colocar (aninhar) apenas um laço for dentro
de outro mais externo, em que esse laço mais externo vai possuir uma variável de controle,
a iLin que representará o índice de linha, assim:
3

for (int iLin=0; iLin<3; iLin++)


for(int iCol=0; iCol<6; iCol++)
cin >> mat[iLin][iCol];

Para rastrear e entender esse código, há uma forma bem simples.

Quando iLin=0, iCol irá variar de 0 a 5 (dentro do corpo do laço) e sairá com o valor 6.
 cin>>mat[0][0]; cin>>mat[0][1]; cin>>mat[0][2]; cin>>mat[0][3]; cin>>mat[0][4];
cin>>mat[0][5];

Quando iLin=1, iCol irá variar de 0 a 5 (dentro do corpo do laço) e sairá com o valor 6.
 cin>>mat[1][0]; cin>>mat[1][1]; cin>>mat[1][2]; cin>>mat[1][3]; cin>>mat[1][4];
cin>>mat[1][5];

Quando iLin=2, iCol irá variar de 0 a 5 (dentro do corpo do laço) e sairá com o valor 6.
 cin>>mat[2][0]; cin>>mat[2][1]; cin>>mat[2][2]; cin>>mat[2][3]; cin>>mat[2][4];
cin>>mat[2][5];

iLin chega a ser igual a 3, e sai do laço mais externo.

Matriz como Parâmetro na Chamada a uma Função

Para passar uma matriz por parâmetro, na chamada a uma função, deve-se escrever apenas seu
nome, como no exemplo abaixo:

entrada(mat);

Matriz como Parâmetro na Definição de uma Função

Deve-se declarar normalmente a matriz como parâmetro no cabeçalho de definição da função,


como no exemplo abaixo:

void entrada( float mat[3][6] )


{
for (int iLin=0; iLin<3; iLin++)
for(int iCol=0; iCol<6; iCol++)
cin >> mat[iLin][iCol];
}
4

Exercícios

1. Escreva um trecho de código para entrada na matriz mat do exemplo, que deverá ser de coluna a
coluna.
2. Escreva o corpo da função somaDiagonalPrincipal, em que você deverá somar os elementos
da diagonal principal da matriz m, retornando-a da função.

int somaDiagonalPrincipal(int m[100][100])

// seu código aqui

3. Escreva um programa modularizado que receba do usuário notas de um aluno em 8 disciplinas por
4 bimestres, inserindo-as em uma matriz 9x4. A última linha deverá conter a média por bimestre,
conforme apresentada na figura a seguir. Imprima as médias da seguinte forma: “A média no Xo.
Bimestre foi Y”.

OBSERVAÇÃO: você deverá definir as seguintes funções:

void entradaNotas(float mat[9][4]);


➔ É importante que nesta função você emita mensagens adequadas ao usuário, como: “Entre com a
nota da Disciplina 1 no 1o. Bimestre: ”. Cada nota deve estar no intervalo [0.0, 10.0].

void calculaMediasBimestrais(float mat[9][4]);


➔ Calcule as médias bimestrais de todas as disciplinas e atribua-as na última linha da matriz.

void imprimeMedias(float mat[9][4]);


➔ Imprima as médias conforme o enunciado.

Você também pode gostar