Вы находитесь на странице: 1из 7

Aula 6: MATRIZ MULTIDIMENSSIONAL

ENGENHARIAS – LINGUAGEM DE PROGRAMAÇÃO – Henry Lubanco

Vetor Multidimensional

Um vetor multidimensional pode ser descrito como um


vetor de vetores.
Por exemplo, um vetor bidimensional (matriz) pode ser
visto como uma tabela bidimensional em que todos os
elementos são do mesmo tipo dados.

<tipo-de-dados> <id-do-vetor> [linha] [coluna]

ENGENHARIAS – LINGUAGEM DE PROGRAMAÇÃO – Henry Lubanco 106

1
Vetor Multidimensional

É muito importante ressaltar que, nesta estrutura o


índice da esquerda indexa as linhas e o da direita indexa
as colunas.
Mais uma vez é bom lembrar que em C++ os índices
variam de zero ao valor declarado, menos um, mais C++
não vai verificar isto para o usuário. Manter os índices na
faixa permitida e tarefa do programador.

ENGENHARIAS – LINGUAGEM DE PROGRAMAÇÃO – Henry Lubanco 107

Exemplo Matriz [3][4]

O nome do array é c
Coluna 0 Coluna 1 Coluna 2 Coluna 3
Linha 0 C [0] [0] C [0] [1] C [0] [2] C [0] [3]
Linha 1 C [1] [0] C [1] [1] C [1] [2] C [1] [3]
Linha 2 C [2] [0] C [2] [1] C [2] [2] C [2] [3]

Índice da Coluna

Índice da Linha

Nome de um elemento
do array individual

ENGENHARIAS – LINGUAGEM DE PROGRAMAÇÃO – Henry Lubanco 108

2
Declaração e inicialização de Matriz

A variável mat representa um vetor bidimensional de 3


linhas e 5 colunas. A forma de o definir em C++ é:
int mat[3][5];
Declarando um array bidimensional b
int b[ 2 ][ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 } };
1e2e3inicializam b[ 0 ][ 0 ] e b[ 0 ][ 1 ] e b[0][2]
4e5e6 inicializam b[ 1 ][ 0 ] e b[ 1 ][ 1 ]e b[1][2]
int b[ 2 ][ 2 ] = { { 1 }, { 3, 4 } };
A linha 0 contém valores 1 e 0 (implicitamente inicializados em zero).
A linha 1 contém os valores 3 e 4.
ENGENHARIAS – LINGUAGEM DE PROGRAMAÇÃO – Henry Lubanco 109

Declaração

A instrução mat[1][3] referencia o elemento da segunda


linha e da quarta coluna.
Os vetores multi–dimensionais não estão limitados a
duas dimensões. Podem ter as dimensões que o
programador achar necessário. O exemplo seguinte
define um vetor de três dimensões.

int multiVec[100][200][50];

ENGENHARIAS – LINGUAGEM DE PROGRAMAÇÃO – Henry Lubanco 110

3
Acesso ao Elemento

Por exemplo a seguinte instrução permite armazenar o valor 75 na


posição [2][1] do vetor vec.
vec[2][1] = 75;
Enquanto a seguinte instrução permite atribuir o valor da posição
[1][3] do vec a uma variável a do tipo int.
a = vec[1][3];
Imprimir os valores o vetor.
for(int i=0; i<linha;i++)
for(int j=0; j<coluna;j++)
cout<<“”<<vec[i][j];
ENGENHARIAS – LINGUAGEM DE PROGRAMAÇÃO – Henry Lubanco 111

Manipulação

Manipulações de array multidimensional


Comumente executadas com instruções for
Exemplo
– Modificar todos os elementos em uma linha

for(int col=0; col < 4; col++ )


a[ 2 ][ col ] = 0;
Exemplo
– Total de todos os elementos
total = 0;
for ( lin = 0; lin < 3; lin++ )
for ( col = 0; col < 4; col++ )
total += a[ lin ][ col ];
ENGENHARIAS – LINGUAGEM DE PROGRAMAÇÃO – Henry Lubanco 112

4
Exemplo

int main(){
int array1[ 2 ][ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 } },
array2[ 2 ][ 3 ] = { 1, 2, 3, 4, 5 },
array3[ 2 ][ 3 ] = { { 1, 2 }, { 4 } };
for ( int i = 0; i < 2; i++ )
for ( int j = 0; j < 3; j++ )
cout <<i<<j<<"-"<<array1[ i ][ j ] << ' ';
cout << "\n";
for ( int i = 0; i < 2; i++ )
for ( int j = 0; j < 3; j++ )
cout <<i<<j<<"-"<<array2[ i ][ j ] << ' ';
cout << "\n";
for ( int i = 0; i < 2; i++ )
for ( int j = 0; j < 3; j++ )
cout <<i<<j<<"-"<<array3[ i ][ j ] << ' ';
}
ENGENHARIAS – LINGUAGEM DE PROGRAMAÇÃO – Henry Lubanco 113

Exemplo

#include<iostream>
#define LINHA 2
#define COLUNA 3
using namespace std;
int main ( )
{
int vec [LINHA][COLUNA]={23 ,45 ,32 ,78 ,98, 99} , i , j, s=0;
for ( i =0; i<LINHA; i++)
for ( j =0; j<COLUNA; j++)
s=s + vec [ i ][ j ] ;
cout<<" Soma : "<<s<<endl ;
}
ENGENHARIAS – LINGUAGEM DE PROGRAMAÇÃO – Henry Lubanco 114

5
Exercícios

Escreva um algoritmo que efetue a leitura de dados para


serem armazenados em uma matriz quadrada de inteiros
com 16 elementos e a imprima posteriormente.
Faça um programa que leia uma matriz de números
inteiros de dimensões 4x4 e imprima a multiplicação de
todos os elementos da matriz.
Faça um programa que leia uma matriz de números
inteiros de dimensões 4x4 e imprima a soma dos valores
de cada linha.
ENGENHARIAS – LINGUAGEM DE PROGRAMAÇÃO – Henry Lubanco 115

Exercícios

Construa um programa que efetue a leitura, a soma


entre duas matrizes inteiras que comportem 6
elementos. Salve em outra matriz.

Dada uma matriz B de dimensão 2 x 3, calcule C = K * B,


sendo K um escalar fornecido pelo usuário. Imprima a
matriz original (B) e a matriz resultante da multiplicação
de B por K.
ENGENHARIAS – LINGUAGEM DE PROGRAMAÇÃO – Henry Lubanco 116

6
Exercícios

Escreva um programa que leia uma matriz A de dimensão


4 x 4, de valores reais, calcule e imprima a soma dos
elementos da diagonal principal.
Escreva um programa que leia uma matriz A de dimensão
3 x 3, de valores reais, Coloque os elementos da diagonal
secundária em um vetor S.
Obs: A diagonal principal une o canto superior esquerdo
ao canto inferior direito e a diagonal secundária inferior
esquerdo a superior direito.
ENGENHARIAS – LINGUAGEM DE PROGRAMAÇÃO – Henry Lubanco 117

Exercícios

Faça um programa que leia o número de matrícula de 4


alunos e suas notas (3 notas para cada aluno). O
programa deve armazenar todos os dados em uma
matriz: a matrícula na primeira coluna e as notas nas
colunas seguintes. O programa deverá calcular, para cada
aluno, a média de suas notas, que deve ser armazenada
na quinta coluna da matriz. No final imprima a matriz.

ENGENHARIAS – LINGUAGEM DE PROGRAMAÇÃO – Henry Lubanco 118