Necesito hacer una función recursiva en pascal para calcular el determinante de una matriz cuadrada, es para una tarea en la universidad. Por favor, alguien que me ayude...
1 Respuesta
Respuesta de hawk
1
1
hawk, Programador Experto en Visual Basic, con conocimientos amplios en...
Te envío el código fuente de un programilla para hacer esto que he tenido que hacer sobre la marcha, pues no tengo el compilador para probarlo, pero creo que más o menos te funcionara. Ahí va... PROGRAM DETERMINANTE; CONST DIMENSION = 5; TYPE Rango = 1..DIMENSION; TipoMatriz = ARRAY [Rango, Rango] OF REAL; VAR Matriz : TipoMatriz; PROCEDURE Cargar (VAR Tabla : TipoMatriz; TAMANO : INTEGER); VAR X, Y : INTEGER; BEGIN FOR X := 1 TO TAMANO FOR Y := 1 TO TAMANO BEGIN WRITE ('Elemento (' + X + ', ' + Y + '): '); READLN (Tabla[X, Y]); END END; FUNCTION Determinante (VAR Tabla : TipoMatriz; Orden : INTEGER) : REAL; VAR CTabla : TipoMatriz; X, I, J, Signo : INTEGER; BEGIN IF TAMANO = 1 THEN Determinante := Tabla[1, 1] ELSE FOR X := 1 TO TAMANO BEGIN FOR I := 1 TO TAMANO - 1 FOR J := 2 TO TAMANO IF (X < Y) THEN CTabla [I, J-1] := Tabla [I, J] ELSE CTabla [I, J-1] := Tabla [I + 1, J]; IF Odd (X) THEN Signo = -1 ELSE Signo = 1; D := D + Signo * Tabla [X, 1] * Determinante (CTabla, Orden - 1) END END; BEGIN Cargar (Matriz, DIMENSION); Writeln ('El determinante de la Matriz introducida es: ', Determinante (Matriz, DIMENSION)) END. Si tienes algún problemilla con el código ya me cuentas.