You are on page 1of 18

Universidade Federal do Rio Grande do Norte Escola de Cincias e Tecnologia

ECT1203 Linguagem de Programao 2011.2


Prof. Alquiles Burlamaqui Prof. Diego Rodrigues de Carvalho Profa. Idalmis Milin Sardina Prof. Luiz Eduardo Cunha Leite

Aula 08 Matrizes

Hora de silenciar o celular

Manter o celular sempre desligado/silencioso quando estiver em sala de aula Nunca atender o celular em sala de aula

Objetivo da aula

Apresentar matrizes em C++:


Motivao para utilizao de matrizes Declarao de matrizes Exemplos de utilizao de matrizes

Matrizes
Em C++, as matrizes podem ser:
Unidimensionais (vetores) Multidimensionais (duas ou mais dimenses) As matrizes so armazenadas de forma linear

int m[4][3];

Declarao de uma matriz de duas dimenses com 4 linhas e 3 colunas

Armazenamento de uma matriz


Endereo
100

Valor
... 5 10 15 20 25 30 35 40 45

int m[4][3] = {{ 5,10,15},


{20,25,30}, {35,40,45},

104 108 112 116 120 124 128 132 136

{50,55,60}};

colunas
5 10 25 15 30

20

140
144 148 152

50
55 60 ...

35
50

40
55

45
60

m[0][0] m[0][1] m[0][2] m[1][0] m[1][1] m[1][2] m[2][0] m[2][1] m[2][2] m[3][0] m[3][1] m[3][2]

linhas

Matrizes bidimensionais
Matrizes de duas dimenses so matrizes em que os elementos so outras matrizes.
Os elementos de uma matriz bidimensional so acessados com indexao dupla: o primeiro ndice acessa a linha e o segundo acessa a coluna.

m[0][0]
m[1][2]

Acessa o elemento da primeira linha e primeira coluna Acessa o elemento da segunda linha e terceira coluna

int main(){ int m[3][4], i, j; for(i=0; i<3; i++) for(j=0; j<4; j++) m[i][j] = (i*4)+j+1; for(i=0; i<3; i++) { for(j=0; j<4; j++) cout << m[i][j] << ; cout << endl; } return 0; }

O que imprime o programa ao lado?

int main(){ int m[3][4], i, j; for(i=0; i<3; i++) for(j=0; j<4; j++) m[i][j] = (i*4)+j+1; for(i=0; i<3; i++) { for(j=0; j<4; j++) cout << m[i][j] << ; cout << endl; } return 0; }

O que imprime o programa ao lado?

Inicializao de matrizes
As trs formas a seguir podem ser usadas:
int m[4][3] = {{1,2,3}, {4,5,6}, {7,8,9}, {10,11,12}}; int m[4][3] = {1,2,3,4,5,6,7,8,9,10,11,12}; int m[ ][3] = {1,2,3,4,5,6,7,8,9,10,11,12};

O nmero de colunas deve ser sempre fornecido.

Espao ocupado por uma matriz bidimensional


nmero de bytes = tamanho da 1 dimenso * tamanho da 2 dimenso * sizeof(tipo)

int m[4][3];

A matriz m ocupa 48 bytes na memria.

Matrizes multidimensionais
O nmero mximo de dimenses depende do compilador.
A forma geral da declarao :

tipo nome[tamanho1][tamanho2]...[tamanhoN];

int m[4][3][6][5];

A matriz m ocupa 1440 bytes.

Usando matrizes de 3 dimenses


int tres[3][2][4] = { { {1,2,3,4}, {5,6,7,8} }, { {7,9,3,2}, {4,6,8,3} }, { {7,2,6,3}, {0,1,9,4} } };

Como acessar o nico valor zero armazenado na matriz acima?

Usando matrizes de 3 dimenses


int tres[3][2][4] = { { {1,2,3,4}, {5,6,7,8} }, { {7,9,3,2}, {4,6,8,3} }, { {7,2,6,3}, {0,1,9,4} } };

terceiro grupo (elemento)


tres[2][1][0]

primeiro dos 4 nmeros segundo elemento do terceiro grupo

Exerccio 1
Dada uma matriz bidimensional de dimenso MxN, calcular e imprimir a matriz transposta. O usurio deve fornecer os tamanhos da matriz e, em seguida, os elementos da matriz. Observao: M, N <= 30 M e N devem ser lidos.

Exerccio 2
Determinar se uma matriz NxN uma matriz de permutao. Uma matriz quadrada chamada de matriz de permutao se seus elementos so apenas 0s e 1s e se em cada linha e coluna da matriz existe apenas um nico valor 1. Exemplo: A matriz ao lado uma matriz de 1 0 0 0 permutao. 0 0 0 1 Observao: 0 0 1 0 N <= 30 0 1 0 0 N deve ser lido.

Exerccio 3
Dadas duas matrizes A (M x N) e B (K x L) reais, encontrar e escrever uma matriz C (M x L) onde C obtida pelo produto de A por B (C = A x B). Observao: M <= 30, N <= 40, K <= 40, L <= 50 M, N, K, L devem ser lidos. EX:

Exerccio 4
Dizemos que uma matriz quadrada inteira um quadrado mgico se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos das diagonais principal e secundria so todas iguais. Dada uma matriz quadrada Anxn , verificar se A um quadrado mgico

um quadrado mgico

Exerccio 5
(POLI 94) Os elementos aij de uma matriz inteira Anxn
representam os custos de transporte da cidade i para a cidade j. Dados uma matriz de custos Anxn e n (n <= 100) itinerrios, cada um com k (k <= 30) cidades, calcular o custo total para cada itinerrio. Exemplo: O custo do itinerrio 03133210 a03+a31+a13+a33+a32+a21+a10= 3 + 1 + 400 + 5 + 2 + 1 + 5 = 417

You might also like