Buscar

Ex06-Solucao

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Programação de Computadores 
Prof. Eduardo Chaves Faria 
 (MATRIZES ) SOLUÇÃO do 6 o EXERCÍCIO 
1) 
A função soma os elementos da matriz triangular superior, ou seja, soma os elementos acima da diagonal 
principal. Por exemplo, se o número de matrícula é 2007123156, a matriz seria: 
 
Mat = 1 e o valor retornado pela função igual a 2 3 + 4 + 1 + 7 + 10 = 27 
2) 
{ Determina se uma matriz quadrada fornecida é Triangular Inferior } 
função lógica MatrizTriangularInferior( n, M ) 
 Defina o tipo das variáveis 
MatrizTriangularInferior ← verdadeiro { a idéia é tentar provar o contrário, isto é, basta achar um } 
 L ← 1 { único valor diferente de zero acima da diagonal principal } 
 repita 
 se L > n então 
interrompa 
 fim se 
 C ← L + 1 
 repita 
 se ( C > n ) ou ( não MatrizTriangularInferior ) então 
 interrompa 
 fim se 
 se M[ L, C ] ≠ 0 então { provou o contrário } 
 MatrizTriangularInferior ← falso 
 fim se 
 C ← C +1 
 fim repita 
 L ← L + 1 
 fim repita 
fim função 
ref: Defina o tipo das variáveis 
 declare M [1:100,1:100] numérico { entrada: matriz quadrada de dimensão n x n } 
 declare n { entrada: ordem da matriz quadrada M } 
 L, C { índices } 
 numérico 
fim ref 
 1 2 3 4 
 5 6 1 7 
 8 5 9 10 
11 12 13 6 
3) 
{ Determina se uma matriz quadrada fornecida é Simétrica } 
função lógica MatrizSimetrica( n, M ) 
 Defina o tipo das variáveis 
MatrizSimetrica ← verdadeiro { a idéia é tentar provar o contrário, isto é, basta achar um } 
 L ← 1 { único valor diferente do valor da sua posição simétrica } 
 repita 
 se L > n então 
interrompa 
 fim se 
 C ← L + 1 
 repita 
 se ( C > n ) ou ( não MatrizSimetrica ) então 
 interrompa 
 fim se 
 se M[ L, C ] ≠ M[ C, L ] então { provou o contrário } 
 MatrizSimetrica ← falso 
 fim se 
 C ← C +1 
 fim repita 
 L ← L + 1 
 fim repita 
fim função 
ref: Defina o tipo das variáveis 
 declare M [1:20,1:20] numérico { entrada: matriz quadrada de dimensão n x n } 
 declare n { entrada: ordem da matriz quadrada M } 
 L, C { índices } 
 numérico 
fim ref 
4) 
{ Multiplicação de matrizes } 
Algoritmo 
declare A[ 1:10, 1:20 ], B[ 1:20, 1:10 ] { matrizes fornecidas na entrada } 
 C[1:10, 1:10] { matriz produto A x B } 
 numérico 
 declare M, N { dimensões das matrizes } 
 I, J, K { apontadores } 
 numérico 
 leia M, N { Leitura das matrizes } 
 leia A[1, 1], A[1, 2], ... A[M, N] 
 leia B[1, 1], B[1, 2], ... B[N, M] 
 I ← 1 { Multiplicação das matrizes } 
 repita 
 se I > M então 
 interrompa 
 fim se 
 Multiplique a linha I da matriz A por todas as colunas da matriz B 
 I ← I + 1 
fim repita 
 escreva C[1, 1], C[1, 1], ... C[M, M] { Escrita da matriz produto C } 
fim algoritmo 
ref: Multiplique a linha I da matriz A por todas as colunas da matriz B 
 J ← 1 
 repita 
 se J > M então 
 interrompa 
 fim se 
 K ← 1 
 repita 
 se K > N então 
 interrompa 
 fim se 
 C[I, J] ← C[I, J] + ( A[I, K] x B[K, J] ) 
 K ← K + 1 
 fim repita 
 J ← J + 1 
 fim repita 
fim ref 
5) 
{ Cálculo de distâncias percorridas por ônibus intermunicipais } 
Algoritmo 
Defina o tipo das variáveis 
Leia a Tabela de Distâncias 
 repita 
 leia Onibus { Leitura do número de uma linha de ônibus } 
 se Onibus = 0 então 
interrompa 
 fim se 
 leia NumeroDeCidades { Leitura do percurso da linha de ônibus } 
 N ← 1 
 repita 
 se N > NumeroDeCidades então 
interrompa 
 fim se 
 leia Cidades[ N ] 
 fim repita 
Calcule a distância percorrida pelo ônibus 
 escreva DistanciaPercorrida 
 fim repita 
fim algoritmo. 
ref: Calcule a distância percorrida pelo ônibus 
DistanciaPercorrida ← 0 
N ← 1 
 repita 
 se N = NumeroDeCidades então 
interrompa 
 fim se 
DistanciaPercorrida ← DistanciaPercorrida + TabelaDeDistancias[ Cidades[ N ], Cidades[ N+1 
] ] 
 N ← N + 1 
 fim repita 
fim ref 
ref: Leia a tabela de distâncias00 
 escreva “Digite em 29 linhas a parte triangular inferior da Tabela de Distâncias” 
 TabelaDeDistancias[1, 1] ← 0 
 I ← 2 
 repita 
 se I > 30 então 
interrompa 
 fim se 
 J ← 1 
 repita 
 se J = I então 
interrompa 
 fim se 
 leia TabelaDeDistancias[ I, J ] 
 TabelaDeDistancias[ J, I ] ← TabelaDeDistancias[ I, J ] 
 J ← J +1 
 fim repita 
 TabelaDeDistancias[ I, I ] ← 0 
 I ← I + 1 
 fim repita 
fim Ref 
ref: Defina o tipo das variáveis 
 declare TabelaDeDistancias[1:30,1:30] numérico 
 declare Cidades[1:24] numérico 
 declare I, J, N, Onibus, NumeroDeCidades, DistanciaPercorrida numérico 
fim ref 
 
6) 
{ Determina se uma matriz é Diagonal Estritamente Dominante } 
Algoritmo 
 Defina o tipo das variáveis 
 leia n 
 leia A[1,1], A[1,2] ... A[n,n] 
Dominante ← verdadeiro 
i ← 1 
 repita 
Calcule o soma dos valores da linha i, exceto o valor da diagonal 
 se Abs( A[i,i] ) ≤ Soma então 
 Dominante ← falso 
 fim se 
 i ← i + 1 
 se ( i > n ) ou ( não Dominante ) então 
 interrompa 
 fim se 
fim repita 
 se Dominante então 
escreva “Matriz é Diagonal Estritamente Dominante” 
 senão 
escreva “Matriz não é Diagonal Estritamente Dominante” 
 fim se 
fim algoritmo 
ref : Calcule o soma dos valores da linha i, exceto o valor da diagonal 
Soma ← 0 
k ← 1 
repita 
 Soma ← Soma + Abs( A[i,k] ) 
 k ← k + 1 
 se k > n então 
 interrompa 
 fim se 
fim repita 
fim ref 
ref: Defina o tipo das variáveis 
 declare A[1:10,1:10] { matriz de valores } 
 numérico 
 declare n {ordem da matriz quadrada } 
 i, k { apontadores } 
 Soma { valor do somatório em cada linha } 
 numérico 
 declare Dominante { sinaliza resultado da inspeção } 
 lógico 
fim ref 
7) 
A solução de um sistema de equações triangular superior é similar à de um sistema de equações 
triangular inferior, cuja solução pode ser encontrada no livro Algoritmos Estruturados (ex. 2.5.2.15 pg.170) 
8) 
{ Determina matriz transposta – Ex 2.5.2.6 do livro Algoritmos Estruturados } 
Algoritmo 
 Defina o tipo das variáveis 
 leia M, N 
 leia A[1, 1], A[1, 2], ... A[M, N] 
 L ← 1 
 repita 
 se L > M então 
interrompa 
 fim se 
 C ← 1 
 repita 
 se C > M então 
interrompa 
 fim se 
 TA[ C, L ] ← A[ L, C ] 
 C ← C + 1 
 fim repita 
L ← L + 1 
fim repita 
 escreva TA[1, 1], TA[1, 2], ... TA[N, M] 
fim algoritmo 
 
ref: Defina o tipo das variáveis 
declare A[ 1:20, 1:50 ] { matriz fornecida de ordem MxN } 
TA[ 1:50, 1:20 ] { matriz transposta de A } 
numérico 
 declare M, N { dimensões da matriz A } 
L, C, K { indices } 
numérico 
fim ref 
9) 
{ Totaliza respostas de questionários – Ex 2.5.2.9 do livro Algoritmos Estruturados } 
Algoritmo 
Defina o tipo das variáveis 
Zerar a matriz de contadores 
 repita 
 leia Nome 
 se Nome = “VAZIO” então 
 interrompa 
 fim se 
 leia Respostas[1], Respostas[2] ... Respostas[10] { Leitura das respostas dadas às 10 perguntas } 
 Contabiliza as respostas 
fim repita 
escreva Totais[1, 1], Totais[1, 2], ... Totais[10, 5] 
fim algoritmo. 
ref: Contabiliza as respostas 
 p ← 1 { cada linha é uma pergunta, e cada coluna é uma opção } 
 repita 
 se p > 10 então 
interrompa 
 fim se 
 Totais[ p, Respostas[ p ] ] ← Totais[ p, Respostas[ p ] ] + 1 
 p ← p + 1 
 fim repita 
fim ref 
ref: Zerar a matriz de contadores 
 p ← 1 
 repita 
 se p> 10 então 
interrompa 
 fim se 
 r ← 1 
 repita 
 se r > 5 então 
interrompa 
 fim se 
 Totais[p, r] ← 0 
 r ← r +1 
 fim repita 
 p ← p + 1 
 fim repita 
fim Ref 
ref: Defina o tipo das variáveis 
 declare Totais[ 1:10,1:5] { matriz de contadores – 10 perguntas e 5 opções de resposta } 
 Respostas[ 1:10 } { respostas às 10 perguntas } 
 numérico 
 declare p { índice para pergunta } 
 r { índice para resposta } 
 numérico 
 declare Nome literal 
fim ref

Outros materiais