Ir ao conteúdo

Matriz Pascal


Guiep

Posts recomendados

Postado

Oi, eu tenho um trabalho pra fazer de introducao a ciencia da computacao, calcular um determinante d uma matriz até 6x6 em PASCAL, mas estou tendo um problema.

Criei varia funcoes a função DET chama a função COFATOR. a função cofator chama a função MENOR_COMPLEMENTAR. e a função MENOR_COMPLEMENTAR chama a função DET.

e quando eu tento complirar ele da um erro de identificador.

program cofator;

uses crt;


const tm = 6; {tamanho maximo}

type mat = array [1..tm,1..tm] of real;


var matriz : array[1..tm,1..tm] of real; {matriz principal}
i,j : integer; {linha e coluna da matriz principal}
t : integer; {tamanho da matriz}
t_matmc : integer;

procedure ler_matriz;
begin
clrscr;
write('Informe o tamanho da matriz: ');
readln(t);
for i := 1 to t do
begin
for j := 1 to t do
begin
write('Informe A ',i,',',j,': ');
readln(matriz[i,j]);
end;
end;
end;


function menor_complementar(matriz_mc : mat; t_mc : integer; j:integer) : real; {cofator sempre da primeira linha}
var
matmc : array[1..tm,1..tm] of real; {menor complementar}
m,n : integer; {linha e coluna do menor complementar}
begin
t_matmc := t_mc;
for m:= 2 to t_mc do
begin
for n := 1 to t_mc do
begin
matmc[m-1,n] := (matriz_mc[m,n]);
end;
end; //copia matriz eliminando linha 1

if j = t_mc then {é a ultima coluna?}
begin
for m := 1 to (t_mc-1) do
begin
matmc[m,t_mc] := 0;
end;
end
else
begin
for m := 1 to (t_mc-1) do
begin
for n := j to (t_mc-1) do
begin
matmc[m,n] := matmc[m,n+1];
end;
end;
end;
t_matmc := t_matmc - 1;

menor_complementar := det(matmc,t_matmc);
end;



function cofator(matriz_cof : mat; t_cof : integer; j : integer) : real;
var x,y : real;
begin
if ((i+j) mod 2) = 0 then {-1^i+j}
begin
cofator := menor_complementar(matriz_cof,t_cof,j);
end
else
begin
cofator := (-1) * menor_complementar(matriz_cof,t_cof,j);
end;

end;




function det(matriz_det:mat; t_det:integer): real;
var cont : integer;
begin
if t_det = 1 then
begin
det := matriz_det[1,1];
end;
if t_det = 2 then
begin
det := matriz_det[1,1]*matriz_det[2,2] - matriz_det[1,2]*matriz_det[2,1];
end;
if t_det > 3 then
begin
for cont := 1 to t_det do
begin
det := det + matriz_det[1,cont] * cofator(matriz_det,t_det,cont);
end;
end;
end;


{Programa Principal}
begin
ler_matriz;
write('Determinante = ',det(matriz,t):0:2);
readln;


end.

Por favor esse trabalho é pra ser entregue terca d manha, me ajudem!!!!

valeu galera.

Postado

Poe isso aqui após as declarações das variáveis:

function det(matriz_det:mat; t_det:integer): real; forward;

O problema que está ocorrendo (tst.pas(66,27) Error: Identifier not found "det") indica que a chamada na linha 66, coluna 27 (menor_complementar := det(matmc,t_matmc);) não está encontrando o identificador "det", que realmente ainda não foi declarado.

Assim, para resolver o problema você deve declará-lo antes de chamá-lo, copiando todo o codigo da procedure para antes dessa que dá erro, ou fazendo um declaração do protótipo dela (só a chamada, sem o código do corpo), que em pascal precisa complementar com a keyword "forward".

JP

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!