Matriz simétrica
Publicado por Leonardo 19/07/2007
[ Hits: 9.213 ]
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 de décimo terceiro no Lazarus
validando um triângulo e classificando-o como equilátero, isoceles ou escaleno.
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
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?









