algoritmos e estruturas de dados i – estruturas de dados

36
Algoritmos e Estruturas de Dados I – Estruturas de Dados Profa. Mercedes Gonzales Márquez

Upload: mirra

Post on 12-Jan-2016

58 views

Category:

Documents


1 download

DESCRIPTION

Algoritmos e Estruturas de Dados I – Estruturas de Dados. Profa. Mercedes Gonzales Márquez. Matrizes – Estrutura composta homogênea bidimensional. Uma matriz representa um conjunto de vetores de mesmo tamanho. Uma matriz possui m linhas e n colunas: – as linhas são numeradas de 1 a m - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Algoritmos e Estruturas de Dados I – Estruturas de Dados

Algoritmos e Estruturas de Dados I – Estruturas de Dados

Profa. Mercedes Gonzales Márquez

Page 2: Algoritmos e Estruturas de Dados I – Estruturas de Dados

Uma matriz representa um conjunto de vetores de mesmo tamanho.Uma matriz possui m linhas e n colunas:– as linhas são numeradas de 1 a m – as colunas são numeradas de 1 a nUma matriz pode armazenar (linhas * colunas)elementos de um mesmo tipo

Matrizes – Estrutura composta Matrizes – Estrutura composta homogênea bidimensionalhomogênea bidimensional

Page 3: Algoritmos e Estruturas de Dados I – Estruturas de Dados

Uma matriz de m linhas e n colunas

1 2 3 4 n-1 n

1

2

3

4

m

Page 4: Algoritmos e Estruturas de Dados I – Estruturas de Dados

Estrutura composta homogênea Estrutura composta homogênea multidimensionalmultidimensional

- Há casos em que uma matriz é insuficiente para armazenar um conjunto de dados para um determinado programa. Nestes casos, énecessário definir uma estrutura de d-dimensões (Estrutura composta homogênea Estrutura composta homogênea multimultidimensional).dimensional).

- Declaração geral para d dimensões:

Tipo primitivo : variável[num_elem_ prim.dim] [num_elem_seg_dim]...[num_elem_d_dim]

Page 5: Algoritmos e Estruturas de Dados I – Estruturas de Dados

Estrutura composta homogênea Estrutura composta homogênea multidimensionalmultidimensional

Exemplos- tridimensional:inteiro: matriz[4][4][4]

Page 6: Algoritmos e Estruturas de Dados I – Estruturas de Dados

Estrutura composta homogênea Estrutura composta homogênea multidimensionalmultidimensional

Page 7: Algoritmos e Estruturas de Dados I – Estruturas de Dados

Estrutura composta homogênea Estrutura composta homogênea multidimensionalmultidimensional

Page 8: Algoritmos e Estruturas de Dados I – Estruturas de Dados

Estrutura composta homogênea Estrutura composta homogênea multidimensionalmultidimensional

Page 9: Algoritmos e Estruturas de Dados I – Estruturas de Dados

Estrutura Composta homogênea Estrutura Composta homogênea multidimensionalmultidimensional

-Para acessar um vetor, o inserimos em um único laço de repetição, fazendo com que haja variação em seu índice.

-Como em uma estrutura multidimensional temos mais de um índice, faz-se necessária a utilização de mais laços de repetição, geralmente em mesmo número do que o número de dimensões da estrutura.

-As estruturas multidimensionais mais utilizadas são as bidimensionais (Matrizes).

Page 10: Algoritmos e Estruturas de Dados I – Estruturas de Dados

Algumas Matrizes EspeciaisAlgumas Matrizes Especiais

-Matriz diagonal

Nesta matriz apenas os elementos da diagonal principal ou secundária são significativos. Exemplos:

Page 11: Algoritmos e Estruturas de Dados I – Estruturas de Dados

Algumas Matrizes EspeciaisAlgumas Matrizes Especiais

-Matriz triangular

Nesse tipo de matriz, apenas os elementos da diagonal principal ou secundária e os abaixo (ou acima) possuem valores significativos.

Page 12: Algoritmos e Estruturas de Dados I – Estruturas de Dados

Algumas Matrizes EspeciaisAlgumas Matrizes Especiais

-Matriz transpostaÉ a matriz que resulta da troca de linhas por colunas em uma determinada matriz.

Uma matriz simétrica é toda a matriz que é igual à sua transposta.

632

420

531

A

645

323

201TA

Page 13: Algoritmos e Estruturas de Dados I – Estruturas de Dados

Matrizes EspeciaisMatrizes Especiais

-Matriz simétrica e anti-simétrica

Uma matriz é dita simétrica quando para todo I e J temos:M[I, J] = M[J, I] Uma matriz é dita anti-simétrica quando para todo I e J temos:M[I, J] = - M[J, I]

Page 14: Algoritmos e Estruturas de Dados I – Estruturas de Dados

Matrizes - ExercíciosMatrizes - Exercícios

(1) Construa um algoritmo que efetue a leitura de duas matrizes inteiras de dimensão 5x5, calcule e imprima a soma delas. Algoritmo <somamatrizes>

inteiro:A[5][5],B[5][5],S[5][5],i,jinicio

para i de 1 até 5 repitapara j de 1 até 5 repita

leia (A[i][j],B[i][j])S[i][j] ← A[i][j]+B[i][j]

fim parafim para

fim

Page 15: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizes(2) Elabore um algoritmo que dada uma matriz 7 x 7 calcule a sua matriz transposta e ainda diga se ela é simétrica ou não.

flag ← 1para i de 1 até 7 repita

para j de 1 até 7 repitase (A[i][j]<>B[i][j])

flag ← 0fim para

fim paraSe (flag=1) então

Escreva (“Simétrica”)senão

Escreva (“Não Simétrica”)fim sefim

Algoritmo <matrizsimetrica>inteiro:A[7][7],i,j,flaginicio

para i de 1 até 7 repitapara j de 1 até 7 repita

leia A[i][j]B[j][i] ← A[i][j]

fim parafim para

Page 16: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizes

(3) Elabore um algoritmo que leia duas matrizes inteiras A e B de dimensão 3x3 e calcule em uma matriz R, a multiplicação delas.

Page 17: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizes

333231

232221

131211

333231

232221

131211

333231

232221

131211

*

RRR

RRR

RRR

BBB

BBB

BBB

AAA

AAA

AAA

Lembre-se que:

33332332133133

32332232123132

31232122112121

33132312131113

32132212121112

31132112111111

***

***

...

***

***

***

***

BABABAR

BABABAR

BABABAR

BABABAR

BABABAR

BABABAR

Page 18: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizesAlgoritmo <produtomatrizes>

inteiro:A[3][3],B[3][3],R[3][3],i,j,kinício

para i de 1 até 3 repitapara j de 1 até 3 repita

leia (A[i][j],B[i][j])fim para

fim parapara i de 1 até 3 repita

para j de 1 até 3 repitaR[i][j] ← 0para k de 1 até 3 repita

R[i][j] ← A[i][k]*B[k][j]+R[i][j]fim para

fim parafim para

fim

Page 19: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizes(4) Faça um algoritmo que leia uma matriz M de 10x10Troque a seguir(a) A linha 2 com a linha 8(b)A coluna 4 com a coluna 10(c) A diagonal principal com a diagonal secundária(d)A linha 5 com a coluna 10

Page 20: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizes

Algoritmo <trocas>inteiro:M[10][10],i,j,tinicio

para i de 1 até 10 repitapara j de 1 até 10 repita

leia (M[i][j])fim para

fim parapara i de 1 até 10 repita

t ← M[2][i]M[2][i] ← M[8][i]M[8][i] ← t

t ← M[i][4] M[i][4] ← M[i][10] M[i][10] ← t

t ← M[5][i]M[5][i] ← M[i][10]M[i][10] ← t

t ← M[i][i] M[i][i] ← M[i][11-i] M[i][11-i] ← tfim para

fim

Page 21: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizes

(5) Faça um algoritmo que leia uma matriz M de dimensão 6x6 e um valor A, multiplique a matriz pelo valor A, coloque os valores da matriz multiplicados por A em um vetor de 36 elementos e imprima o vetor.

Algoritmo <matriz_vetor>inteiro:M[6][6],V[36],A,i,jinicio

leia (A)para i de 1 até 6 repita

para j de 1 até 6 repitaleia (M[i][j])V[(i-1)*6+j] ← A*M[i][j]

fim parafim para

Page 22: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizes

(6) Escreva um algoritmo que leia um número inteiro A e uma matriz de 30x30 de inteiros. Também deve contar quantos valores iguais a A estão na matriz e criar uma matriz X contendo todos os elementos diferentes de A. Nas outras posições deve se colocar o valor 0.

Page 23: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizesAlgoritmo <matriz_vetor>inteiro:M[30][30],A,X[30][30],i,j,continicio

leia (A)cont ← 0para i de 1 até 30 repita

para j de 1 até 30 repitaleia (M[i][j])se (M[i][j]=A) então

X[i][j] ← 0cont ← cont+1

senãoX[i][j] ← M[i][j]

fim sefim para

fim para

Page 24: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizes(7) Escreva um algoritmo que leia uma matriz M de 12 x 13 e divide todos os 13 elementos de cada uma das linhas de M pelo maior elemento em módulo daquela linha. Algoritmo <divide_maior>

inteiro:M[12][13],maior,i,jinicio

para i de 1 até 12 repitamaior ← 0para j de 1 até 13 repita

leia (M[i][j])se (abs(M[i][j])>maior) então

maior ← abs(M[i][j])fim se

fim parapara j de 1 até 13 repita

M[i][j] ← M[i][j]/maiorfim para

fim parafim

Page 25: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizes(8) Escreva um algoritmo que leia uma matriz M de 5 x 5 e crie dois vetores SL[5] e SC[5] que contenham, respectivamente, as somas das linhas e das colunas de M. Escreva a matriz e os vetores criados.

Algoritmo <soma_linhas_colunas>inteiro:M[5][5],SL[5],SC[5],i,jinicio

/*Leitura de M[i][j]*/para i de 1 até 5 repita

SL[i] ← 0SC[i] ← 0para j de 1 até 5 repita

SL[i] ← SL[i]+M[i][j]SC[i] ← SC[i]+M[j][i]

fim parafim para

fim

Page 26: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizes(9) Faça um algoritmo que leia uma matriz 20x15 de inteiros e calcule a soma das linhas pares da matriz.

Algoritmo <soma_linhas_pares>inteiro:M[20][15],S,i,jinicio

S ← 0para i de 2 até 20 passo 2 repita

para j de 1 até 15 repitaleia (M[i][j])S ← S+M[i][j]

fim parafim para

fim

Page 27: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizes(10) Na teoria de sistemas, define-se como elemento minimax de uma matriz o menor elemento da linha onde se encontra o maior elemento da matriz. Escreva um algoritmo que leia uma matriz 10x10 de inteiros e encontre seu elemento minimax, mostrando também sua posição.

Page 28: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizes

Algoritmo <minimax>inteiro:M[10][10],minimax,maior,indi,indj,i,jinicio

maior ← -infpara i de 1 até 10 repita

para j de 1 até 10 repitaleia (M[i][j])se (M[i][j]>maior) então

maior ← M[i][j]

indi ← ifim se

fim parafim para

menor ← infpara j de 1 até 10 repita

se (M[indi][j]<menor) então

menor ← M[i][j]

indj ← jfim se

fim parafim

Page 29: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizes

(11) Faça um algoritmo que leia uma matriz 12x12 de inteiros, calcule e escreva a soma da área hachurada na letra a e o maior elemento da área hachurada na letra b abaixo:

Page 30: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizes

Algoritmo <areahachurada-a>inteiro:M[12][12], i,j, somainício

soma ←0para i de 1 até 12 repita

para j de 1 até 12 repitaleia (M[i][j])

fim parafim para

para i de 1 até 11 repitapara j de 1 até 12-i repita

soma← soma+M[i][j]fim para

fim parafim

Algoritmo <areahachurada-b>inteiro:M[12][12], i,j, maiorinício

para i de 1 até 12 repitapara j de 1 até 12 repita

leia (M[i][j])

fim parafim paramaior ← -infpara i de 1 até 6 repita

para j de i até 13-i repitase (M[j][i]>maior) então

maior← M[j][i]fim sese (M[j][13-i]>maior) entãomaior← M[j][13-i]fim se

fim parafim para

fim

Page 31: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizes(12) Faça um algoritmo que leia uma matriz 12 x 12 e calcule e escreva: a. o menor elemento e a sua posição (índices) da área hachurada; b. a média dos elementos da área hachurada.

Page 32: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizesAlgoritmo <areahachurada-a>inteiro:M[12][12], i,j, menorinício

menor ←infpara i de 1 até 12 repita

para j de 1 até 12 repitaleia (M[i][j])

fim parafim parapara i de 1 até 12 repita

para j de 13-i até 12 repitase (M[i][j]<menor) então

menor← M[i][j]fim se

fim parafim para

fim

Algoritmo <areahachurada-b>inteiro:M[12][12], i,j, soma,media,continício

para i de 1 até 12 repitapara j de 1 até 12 repita

leia (M[i][j])fim para

fim parasoma ← 0para i de 1 até 5 repita

para j de i+1 até 12-i repita

soma ← soma+M[i][j]soma ← soma+M[13-i][j]cont ←cont+1

fim parafim paramedia ←soma/cont

fim

Page 33: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizes(13) Uma certa fábrica produziu dois tipos de motores M1 e M2 nos meses de janeiro, ...,dezembro e o número de motores produzidos foi registrado na tabela a seguir:

O setor de controle de vendas tem uma tabela do custo e do lucro (em unidades monétarias) obtidos com cada motor.

Page 34: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizes(13) Faça um algoritmo que, a partir da produção mensal de motores M1 e M2 e seus respectivos custos e lucros, calcule o custo e lucro em cada um dos meses e o custo e lucro anuais.

Page 35: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizesAlgoritmo <motores>inteiro:P[12][2], C[12][2],

val[2][2],cla[2][2],i,j,kinício

para i de 1 até 2 repitaleia (val[i][1], val[i][2])para j de 1 até 12 repita

leia (P[j][i])fim para

fim parapara i de 1 até 12 repita

para j de 1 até 2 repitaC[i][j] ← 0para k de 1 até 2 repitaC[i][j] ← P[i][k]*val[k][j]+C[i][j]fim para

fim parafim para

para j de 1 até 2 repitacla[j] ← 0para i de 1 até 12 repita

cla[j]← cla[j]+C[i][j]fim para

fim para

para i de 1 até 2 repitapara j de 1 até 12 repita

leia (C[i][j])fim para

fim para

para i de 1 até 2 repitaleia (cla[i])

fim para

Page 36: Algoritmos e Estruturas de Dados I – Estruturas de Dados

MatrizesMatrizesResolver os exercícios propostos sobre vetores e matrizes do livro de Harry Farrer.