Você está na página 1de 20

Escola de Cincias e Tecnologia

UFRN

Matrizes

ECT2203 Lgica de Programao

Manter o telefone celular sempre


desligado/silencioso quando estiver em
sala de aula;
Nunca atender o celular na sala de aula.

Motivao
Uma turma possui N alunos. Durante um
semestre, esse alunos realizam M avaliaes.
Como armazenar todas as notas dessa turma?

Matrizes
Em C++, as matrizes podem ser
Unidimensionais (vetores)
Multidimensionais (duas ou mais dimenses)

O nmero mximo de dimenses vai depender do


compilador
Declarao de uma matriz de inteiros de duas
dimenses, com 4 linhas e 3 colunas
int m[4][3];

Matrizes
Matrizes so armazenadas na memria de forma
contnua
int m[3][3];

Matrizes
Os ndices sempre comeam em 0

Matrizes
Matrizes de duas dimenses so vetores em que
os elementos so outros vetores
Os elementos so acessados com indexao dupla
O primeiro ndice acessa a linha
O segundo ndice acessa a coluna

m[0][0]
Acessa o elemento da primeira linha e primeira coluna

m[1][2]
Acessa o elemento da segunda linha e terceira coluna

Matrizes
Como percorrer uma matriz?

Matrizes
Como percorrer uma matriz?
Vetores tem somente uma dimenso
Utilizamos um lao para percorrer um vetor do incio
at o fim

Matrizes
Como percorrer uma matriz?
Vetores tem somente uma dimenso
Utilizamos um lao para percorrer um vetor do incio
at o fim

Matrizes bidimensionais tem duas dimenses


(linha e coluna)
Logo, utilizamos dois laos (uma para as linhas, outro
para as colunas) para percorr-la do incio at o fim

Matrizes
Para matrizes bidimensionais, precisamos de um lao
externo responsvel pelas linhas, e de um lao interno
para percorrer as colunas de uma linha
int dados[3][5];
for(int i=0; i<3; i++){
for(int j=0; j<5; j++){
// acessa o elemento i,j
}
}

Matrizes
Como preencher uma matriz?

Matrizes
Como preencher uma matriz?
int dados[3][3];
for(int i=0; i<3; i++){
for(int j=0; j<3; j++){
cin>>dados[i][j];
}
}
Inicialmente i e j so 0. Acessamos o dados[0][0]...

Matrizes
Exibindo uma matriz bidimensional
int dados[3][3];
for (int i=0; i<3; i++) {
for (int j=0; j<3; j++) {
//espao entre os elementos das colunas
cout<<dados[i][j]<< ;
}
//quebra de linha antes de trocar para a proxima linha
cout<<endl;
}

Matrizes
Inicializao de matrizes:
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};

Matrizes
Como acessar o nico valor zero da matriz?
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}}
};

Matrizes
Como acessar o nico valor zero da matriz?
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}}
};
tres[2][1][0] // terceira camada, segunda linha, primeira coluna

Exerccios
Numa excurso de uma agncia de viagem existem 4
nibus (1, 2, 3 e 4), cada nibus tem 16 cadeiras para
passageiros.
Faa um programa que realize as reservas das cadeiras
com base no nmero do nibus e no nmero da cadeira,
caso o local esteja vazio, a cadeira pode ser reservada,
caso esteja ocupada, deve ser exibida uma mensagem
informando o ocorrido.
A cada tentativa de reserva, bem sucedida ou no, o
programa deve perguntar se o usurio deseja realizar
uma nova reserva ou se deseja finalizar o programa.

Exerccios
Escrever um programa que:
Determina se uma matriz NxN uma matriz de
permutao. Uma matriz quadrada uma matriz de
permutao se seus elementos so apenas 0s e 1s, se
em cada linha existe apenas um nmero 1, e se em
cada coluna existe apenas um nmero 1.
1

Exerccios
Escrever um programa que:
Preenche uma matriz 3x3 com os 9 primeiros nmeros
pares.
Crie uma matriz identidade de ordem N, onde N deve
ser informado pelo usurio.
Dada uma matriz MxN, onde M e N sero informados
pelo usurio com valor mximo igual a 30, exiba a
matriz transposta.