Buscar

Algoritmo para calcular determinantes (portugol do VisuAlg)

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

algoritmo "determinantes"
// Função : Determinantes
// Autor : Francinaldo
// Data : 22/03/2016
// Seção de Declarações
var
n,i,j,f,g,s:inteiro
end:caractere
run,cal:logico
q,sinal,som,som_,det:real
temp:vetor[1..20] de real
mat:vetor[1..20,1..20] de real
inicio
repita
limpatela
sinal<-1
escreval("Olá. Este algoritmo calcula o determinante de uma dada matriz n x n.")
repita
 escreval("Imforme um valor menor ou igual a 20 para n:")
 leia(n)
ate (n>0) e (n<=50)
escreva(" ")
para s de 1 ate n faca
 escreva(s:2," ")
fimpara
escreval
para i de 1 ate n faca
 escreva(" ")
 para s de 1 ate n faca
 escreva("----")
 fimpara
 escreval
 para j de 1 ate n faca
 se j=1 entao
 escreva(i:2," |")
 fimse
 escreva(" |")
 fimpara
 escreval
fimpara
escreva(" ")
para s de 1 ate n faca
 escreva("----")
fimpara
escreval
para i de 1 ate n faca
 para j de 1 ate n faca
 escreval("Entre com o termo na posição [",i,",",j," ]:")
 leia(mat[i,j])
 se mat[i,j]-int(mat[i,j])<>0 entao
 in<-falso
 fimse
 limpatela
 run<-verdadeiro
 escreva(" ")
 para s de 1 ate n faca
 escreva(s:2," ")
 fimpara
 escreval
 para f de 1 ate n faca
 escreva(" ")
 para s de 1 ate n faca
 escreva("----")
 fimpara
 escreval
 para g de 1 ate n faca
 se g=1 entao
 escreva(f:2," |")
 fimse
 se run entao
 escreva ((mat[f,g]):3,"|")
 senao
 escreva(" |")
 fimse
 se (f=i)e(g=j)entao
 run<-falso
 fimse
 fimpara
 escreval
 fimpara
 escreva(" ")
 para s de 1 ate n faca
 escreva("----")
 fimpara
 escreval
 fimpara
fimpara
cal<-verdadeiro
para i de 1 ate n faca
 som<-0
 som_<-0
 para j de 1 ate n faca
 som<-som+mat[i,j]
 som_<-som_+mat[j,i]
 fimpara
 se (som=0)ou(som_=0) entao
 det<-0
 cal<-falso
 fimse
fimpara
se cal entao
 s<-1
 repita
 para i de s ate n faca
 se mat[i,s]<>0 entao
 para f de s ate i faca
 se mat[f,s]=0 entao
 para j de 1 ate n faca
 temp[j]<-mat[f,j]
 mat[f,j]<-mat[i,j]
 mat[i,j]<-temp[j]
 sinal<-(-1*sinal)
 fimpara
 fimse
 fimpara
 fimse
 fimpara
 para i de s+1 ate n faca
 q<-mat[i,s]
 para j de s ate n faca
 mat[i,j]<-mat[i,j]-(q/mat[s,s])*mat[s,j])
 fimpara
 fimpara
 s<-s+1
 ate s>n
 det<-mat[1,1]
 para s de 2 ate n faca
 det<-det*mat[s,s]
 fimpara
 det<-det*sinal
fimse
escreval("----------------------------------")
escreval("O determinante da matriz é",det)
escreval
escreval("Tecle enter para calcular novamente ou insira qualquer tecla para encerrar:")
leia(end)
ate end<>""
fimalgoritmo

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando