Matriz simétrica
Publicado por Leonardo 19/07/2007
[ Hits: 8.901 ]
Este programa analisa a matriz que foi digitada e diz se ela é simétrica ou triangular inferior.
Programa gera uma matriz, exibe esta matriz e depois verifica se a matriz ‚ triangular inferior ou se ‚ uma matriz simetrica e depois informa tais fatos ao usuario por meio de mensagens} program matriz01; uses crt; {Biblioteca padrao} type {Definicao de tipo definido pelo usuario} matriz = array [1..30,1..30] of integer; var {Declaracao de variaveis} x: matriz; {Matriz lida} l1,c1,linha,coluna: integer; {l1,c1 sao indices da matriz e linha e coluna servirao para posicionar o cursor} re,res: boolean;{variaveis que recebem um valor falso ou verdadeiro} {Declaracao do procedimento lermat} procedure lermat (var a:Matriz; var l,c,li,co:integer); {Declaracao de variaveis locais} var i,j: integer; {indices da matriz a} begin write ('Forneca o numero de linhas: '); {Orientacao ao usuario} readln (l); {Le a quantidade de linhas} write ('Forneca o numero de colunas: '); {Orientacao ao usuario} readln (c); {Le a quantidade de colunas} writeln; {Comando que pula linha} writeln ('Forneca os elementos'); {Orientacao ao usuario} {Estrutura de repeticao para ler a matriz} for i:=1 to l do {Percorre as linhas} begin for j:=1 to c do {Percorre as colunas} begin gotoxy (co,li); {Posicionamento do cursor} read (A[i,j]); {Le os elementos da matriz} co:=co+7; {Muda a coluna permanecendo na mesma linha} end; li:= li+1; {Muda a linha} co:=1; {Retorna o valor inicial da coluna} end; end; {fim do procedimento} {Declaracao da funcao trian_infe} function trian_infe (a: matriz; l,c:integer):boolean; {Declaracao de variaveis locais} var s,i,j,g: integer; {i,j indices da matriz, s eh contador e g variavel para atribuir valor as colunas} begin s:=0; {Atribuicao do valor inicial do contador} g:=2; {Atribuicao do valor inicial da coluna da matriz} {Para identificar se ‚ triangular inferior verificamos se os elementos que deveram ser zero, os sao} {Estrutura de repeticao que percorre os elementos que devem ser zero para ser triangular inferior} for i:=1 to l do {Percorre as linhas} begin for j:=g to c do {Percorre as colunas} If a[i,j]<>0 then {Compara se os elementos que devem ser zero, os sao} s:=s+1; {Se nao forem acrescenta uma unidade} g:=g+1; {Acrecenta uma unidade na coluna} end; If s=0 then {Entao todos os elementos que devem ser zero, os sao} trian_infe:=true {Retorno da funcao} else {Entao todos os elementos que devem ser zero, nao sao} trian_infe:=false; {Retorno da funcao} end; {Fim da funcao} {Declaracao da funcao simetrica} function simetrica (a: matriz; l,c: integer):boolean; {Declaracao de variaveis locais} var s,i,j,t:integer; {i,j indices da matriz, s contador e t total de elementos} begin s:=0; {Atribuicao do valor inicial do contador} {Estrutura de repticao que vai verificar se eh simetrica} for i:=1 to l do {Percorre as linhas} for j:=1 to c do {Percorre as colunas} If a[i,j] = a[j,i] then {Compara se os elementos sao simetricos} s:=s+1; {Acrescenta uma unidade} t:= c*l; {Calcula a quantidade total de elementos e atribui este valor a t} If t=s then {Se todos os elementos forem simetricos o total de elementos vai ser igual ao contador} simetrica:=true {Retorno da funcao} else {Nao eh simetrica} simetrica:=false; {Retorno da funcao} end; {Fim da funcao} {Declaracao do procedimento escremat} procedure escremat (a: matriz; l,c,li,co:integer); {Declaracao de variaveis locais} var i,j: integer; {indices da matriz a} begin for i:=1 to L do {Percorre as linhas} begin for j:=1 to c do {Percorre as colunas} begin gotoxy (co,li); {Posicionamento do cursor} writeln (a[i,j]); {Escreve os elementos da matriz} co:= co+7; {Muda a coluna permanecendo na mesma linha} end; li:=li+1; {Muda a linha} co:=1 {Retorna o valor inicial da coluna} end; end; {Fim do procedimento} begin {Inicio do programa principal} clrscr; {Comando do Pascal que limpa a tela} coluna:=1; {Atribuicao do valor incial da coluna} linha:=6; {Atribuicao do valor inicial da linha} lermat (x,l1,c1,linha,coluna); {Chamada do procedimento que le a matriz} writeln; {Comando que pula linha} writeln; {Comando que pula linha} writeln ('A matriz gerada foi:');{Orientacao ao usuario} linha:= linha+4; {Acrescenta 4 unidades na linha} escremat (x,l1,c1, linha,coluna); {Chamada do procedimento que escreve a matriz} writeln; {Comando que pula linha} writeln; {Comando que pula linha} res:= trian_infe (x,l1,c1); {Atribuicao do valor da funcao trian_infe} re:= simetrica (x,l1,c1); {Atribuicao do valor da funcao simetrica} {Estrutura que a partir dos valores obtidos nas funcoes vai escrever qual eh o tipo da matriz} If res = true then writeln ('A matriz digitada eh tringular inferior') else If re = true then writeln ('A matriz digitada eh simetrica') else writeln ('A matriz digitada nao eh nem triangular inferior nem simetrica'); readkey; {Comando do Pascal que espera o usuario digitar qualquer tecla para finalizar} end.{Fim do programa principal}
Calculadora Completa feita no Lazarus(Delphi 7 para Linux)
encontrar o maior e o menor valor em um vetor
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Como atualizar o Debian 8 para o 10 (10)
Dica sobre iptables ACCEPT e DROP (6)
NGNIX - Aplicar SNAT para evitar roteamento assimetrico (29)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta