120 likes | 282 Views
Determinante. Dada uma matriz A qualquer 2 x 2, calcular seu determinante. (5 x 3) – (2 x 4) = 15 – 8 = 7. ALGORITMO detm; VARIÁVEIS m : VETOR [1..2, 1..2] DE INTEIRO; i, j, det : INTEIRO; INÍCIO PARA i:=1 ATÉ 2 FAÇA PARA j:=1 ATÉ 2 FAÇA
E N D
Determinante • Dada uma matriz A qualquer 2 x 2, calcular seu determinante. (5 x 3) – (2 x 4) = 15 – 8 = 7
ALGORITMO detm; VARIÁVEIS m : VETOR [1..2, 1..2] DE INTEIRO; i, j, det : INTEIRO; INÍCIO PARA i:=1 ATÉ 2 FAÇA PARA j:=1 ATÉ 2 FAÇA LER(m[i,j]); det:=m[1,1]*m[2,2] - m[1,2]*m[2,1]; ESCREVER('Determinante: ',det); FIM.
Somar matrizes • Duas matrizes quadradas 5 x 5; • Cada elemento deve estar entre 0 e 99;
ALGORITMO soma_m; VARIÁVEIS m1 : VETOR [1..5,1..5] DE INTEIRO; m2 : VETOR [1..5,1..5] DE INTEIRO; rs : VETOR [1..5,1..5] DE INTEIRO; i,j : INTEIRO; INÍCIO PARA i:=1 ATÉ 5 FAÇA INÍCIO ESCREVER('Linha ',i); PARA j:=1 ATÉ 5 FAÇA INÍCIO REPETIR ESCREVER('Elemento ', j,' de M1: '); LER(m1[i,j]); ATÉ (m1[i,j] >= 0) E (m1[i,j] <= 99); REPETIR ESCREVER('Elemento ', j,' de M2: '); LER(m2[i,j]); ATÉ (m2[i,j] >= 0) E (m2[i,j] <= 99); rs[i,j]:=m1[i,j]+m2[i,j]; FIM; FIM; PARA i:=1 ATÉ 5 FAÇA PARA j:=1 ATÉ 5 FAÇA ESCREVER(rs[i,j]); FIM.
Matriz transposta • Dada uma matriz A qualquer n x m, obter sua transposta At; • Os elementos da matriz A devem estar na faixa de 0 até 999.
ALGORITMO transposta; VARIÁVEIS a : VETOR[1..100, 1..100] DE INTEIRO; b : VETOR[1..100, 1..100] DE INTEIRO; i,j,n,m : INTEIRO; INÍCIO ESCREVER('Quantas linhas? = '); LER(n); ESCREVER('Quantas colunas? = '); LER(m); PARA i:= 1 ATÉ n FAÇA PARA j:=1 ATÉ m FAÇA INÍCIO REPETIR ESCREVER('Linha ',i,' Coluna ',j,' = '); LER(a[i,j]); ATÉ (a[i,j] >= 0) E (a[i,j]<=999); b[j,i]:=a[i,j]; FIM; ESCREVER; PARA i:= 1 ATÉ m FAÇA INÍCIO ESCREVER; PARA j:=1 ATÉ n FAÇA ESCREVER(b[i,j]:3,' '); FIM; FIM.
Distância entre cidades • Considere a necessidade de conhecer, para consultar posteriormente, a distância entre 7 cidades quaisquer; • Devemos pensar que a matriz resultante será constituída pelas mesmas referências em linha e coluna, ou seja, tanto linhas quanto colunas representam as mesmas cidades
Obs: Distâncias fictícias – Jdi = Jundiaí, SP =São Paulo, Cps = Campinas Itb = Itatiba, Vza = Várzea Paulista, Brg = Bragança Paulista
Passos para construção • Zerar as distâncias entre cidades iguais: não existe qualquer distância entre uma cidade e ela mesma; • Cadastrar as distâncias: entrar com os valores referentes às distâncias entre uma cidade e outra. Neste processo, convém observar que a matriz representada acima forma dois “triângulos” divididos por uma “reta” diagonal: os dois “triângulos” são exatamente iguais, desde que se considere um “de ponta cabeça” em relação ao outro. Assim, não é necessário cadastrar duas vezes a mesma distância, ou seja, a distância entre São Paulo e Itu é a mesma que aquela entre Itu e São Paulo; • Consultar as distâncias cadastradas: pode haver um número virtualmente ilimitado de consultas de distâncias entre duas cidades, sob controle do usuário, considerando números válidos que identificam as cidades (de 1 até 7, sendo, no exemplo acima, 1 = Jundiaí, 2 = São Paulo, 3 = Campinas, 4 = Itu, 5 = Itatiba, 6 = Várzea Paulista, 7 = Bragança Paulista).
ALGORITMO trip; VARIÁVEIS cd : VETOR [1..7,1..7] DE INTEIRO; i,j : INTEIRO; cont : CARACTER; INÍCIO PARA i:=1 ATÉ 7 FAÇA cd[i,i]:=0; PARA i:=1 ATÉ 7 FAÇA INÍCIO ESCREVER('Distancias desde Cidade ',i); PARA j:=i+1 ATÉ 7 FAÇA INÍCIO ESCREVER('Ate Cidade ', j, ' = '); LER(cd[i,j]); {parte de CIMA da matriz} cd[j,i]:=cd[i,j];{parte de BAIXO da matriz} FIM; FIM; ESCREVER(‘Consultar distancias? : ’);LER(cont); ENQUANTO (MAIÚSCULA(cont)='S') FAÇA INÍCIO REPETIR ESCREVER('Origem : '); LER(i); ATÉ (i > 0 E i <= 7); REPETIR ESCREVER('Destino : '); LER(j); ATÉ (j > 0 E j <= 7); ESCREVER('Distancia : ', cd[i,j]); ESCREVER('Continua? : ');LER(cont); FIM; FIM.
Notas e médias • Construir um algoritmo para armazenar a nota de 5 alunos em 3 disciplinas. Armazenar, também, na matriz, a média por aluno e por disciplina.
ALGORITMO notas; VARIÁVEIS classe : VETOR [1..6, 1..4] DE REAL; i,j : INTEIRO; INÍCIO classe[6,1]:=0;classe[6,2]:=0;classe[6,3]:=0; PARA i:= 1 ATÉ 5 FAÇA INÍCIO classe[i,4]:=0; PARA j:=1 ATÉ 3 FAÇA INÍCIO ESCREVER(‘Nota do aluno ',i); ESCREVER('Materia: ', j); LER(classe[i,j]); classe[i,4]:=classe[i,4]+classe[i,j]/3; classe[6,j]:=classe[6,j]+classe[i,j]/5; FIM; FIM; PARA i:=1 ATÉ 5 FAÇA ESCREVER('Aluno ',i,' = ', classe[i,4]); ESCREVER('Media das disciplinas'); PARA j:=1 ATÉ 3 FAÇA ESCREVER('Disciplina ',j,' = ', classe[6,j]); FIM.