Baixe o app para aproveitar ainda mais
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
Compartilhar