Sie sind auf Seite 1von 7

Aula 6: MATRIZ MULTIDIMENSSIONAL

ENGENHARIAS LINGUAGEM DE PROGRAMAO 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 so do mesmo tipo dados.

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

ENGENHARIAS LINGUAGEM DE PROGRAMAO 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++
no vai verificar isto para o usurio. Manter os ndices na
faixa permitida e tarefa do programador.

ENGENHARIAS LINGUAGEM DE PROGRAMAO 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 PROGRAMAO Henry Lubanco 108

2
Declarao e inicializao de Matriz

A varivel 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 contm valores 1 e 0 (implicitamente inicializados em zero).
A linha 1 contm os valores 3 e 4.
ENGENHARIAS LINGUAGEM DE PROGRAMAO Henry Lubanco 109

Declarao

A instruo mat[1][3] referencia o elemento da segunda


linha e da quarta coluna.
Os vetores multidimensionais no esto limitados a
duas dimenses. Podem ter as dimenses que o
programador achar necessrio. O exemplo seguinte
define um vetor de trs dimenses.

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

ENGENHARIAS LINGUAGEM DE PROGRAMAO Henry Lubanco 110

3
Acesso ao Elemento

Por exemplo a seguinte instruo permite armazenar o valor 75 na


posio [2][1] do vetor vec.
vec[2][1] = 75;
Enquanto a seguinte instruo permite atribuir o valor da posio
[1][3] do vec a uma varivel 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 PROGRAMAO Henry Lubanco 111

Manipulao

Manipulaes de array multidimensional


Comumente executadas com instrues 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 PROGRAMAO 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 PROGRAMAO 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 PROGRAMAO Henry Lubanco 114

5
Exerccios

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.
Faa um programa que leia uma matriz de nmeros
inteiros de dimenses 4x4 e imprima a multiplicao de
todos os elementos da matriz.
Faa um programa que leia uma matriz de nmeros
inteiros de dimenses 4x4 e imprima a soma dos valores
de cada linha.
ENGENHARIAS LINGUAGEM DE PROGRAMAO Henry Lubanco 115

Exerccios

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 dimenso 2 x 3, calcule C = K * B,


sendo K um escalar fornecido pelo usurio. Imprima a
matriz original (B) e a matriz resultante da multiplicao
de B por K.
ENGENHARIAS LINGUAGEM DE PROGRAMAO Henry Lubanco 116

6
Exerccios

Escreva um programa que leia uma matriz A de dimenso


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 dimenso
3 x 3, de valores reais, Coloque os elementos da diagonal
secundria em um vetor S.
Obs: A diagonal principal une o canto superior esquerdo
ao canto inferior direito e a diagonal secundria inferior
esquerdo a superior direito.
ENGENHARIAS LINGUAGEM DE PROGRAMAO Henry Lubanco 117

Exerccios

Faa um programa que leia o nmero de matrcula de 4


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

ENGENHARIAS LINGUAGEM DE PROGRAMAO Henry Lubanco 118