Matriz simétrica
Publicado por Leonardo 19/07/2007
[ Hits: 9.212 ]
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}
Metodo de Ordenacion : Burbuja
mais um modelo de programa com vetor
Editor de texto em Pascal/Lazarus
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Como posso remover arquivos MSG duplicados das minhas pastas de forma ... (0)
Assinador JNLP do Site Portal da Nota Fiscal Eletrônica (4)









