Autor: J.B. - Gruppe 1
Für die folgenden Funktionen und Prozeduren benötigt man einen Typ tmat, der wie folgt definiert ist: tmat= Array [1..10, 1..10] von Gleikommazahlen; (*Diese Prozedur holt sich die Untermatrix aus einer Matrix durch Entfernung der 1. Zeile und einer beliebigen Spalte. Die Untermatrix wird als Ausgabeparameter deklariert*) Prozedur TakeUntermat (mat vom Typ tmat VAR untermat vom Typ tmat grosse vom Typ Ganzzahl auslass vom Typ Ganzzahl Variable i, j vom Typ Ganzzahl spalte vom Typ Ganzzahl Start spalte soll sein 0 Für j soll sein 1 bis grosse tue Wenn j <> auslass dann spalte soll sein spalte + 1 Für i soll sein 1 bis grosse - 1 tue Untermat[i, spalte] soll sein mat[i + 1, j] Ende Für Ende Wenn Ende Für Ende Prozedur (*Dieserekursive Funktion errechnet die Determinante einer n x n Matrix. Sie verwendet die oben genannte Funktion TakeUntermat. Der Ausstiegspunkt der Rekursion wird erreicht, wenn die eingegeben Matrix nur noch die Größe 1 x 1 besitzt*) Funktion Det (mat vom Typ tmat; grosse vom Typ Ganzzahl) vom Typ Gleitkommazahlen; Variablen sum vom Typ Gleitkommazahlen fakt vom Typ Ganzzahl j vom Typ Ganzzahl untermat vom Typ tmat Start fakt soll sein -1 sum soll sein 0 Wenn grosse = 1 dann Det soll sein mat[1, 1] Ansonsten Für j soll sein 1 bis grosse tue Fakt soll sein fakt * -1 TakeUntermat(mat, untermat, grosse, j) Sum soll sein sum + mat[1, j] * fakt * Det(untermat, grosse –1) Ende Für Det soll sein sum Ende Ansonsten Ende Funktion
(*Eine einfacheBenutzerabfrageprozedur vollendet das Programm*) Prozedur BeneAbfr (VAR tab vom Typ tmat n : Ganzzahl) Variable i, j, : Ganzzahl Start n := 11 Solange n > 10 tue Schreibe(Zeilen- und Spaltenanzahlder Matrix (max = 10) :); Ende Solange Für i := 1 bis n tue Für j := 1 bis n tue Schreibe(Wert in der i. Zeile, j.Spalte:); Lese(tab[i,j]) EndeFür Ende Für Ende Prozedur
(*Hauptprogramm*) Variable Writeln; BeneAbfr(matrix, grosse); Writeln; Write(' Die Determinante der Matrix'); Writeln(' betraegt'); Writeln(' ',Det(matrix, grosse):0:3); Readln END.
-Zurück zur Aufgabenstellung -Weiter zum Pascalcode
|