home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* DET-BSP2.PAS *)
- (* (c) 1991 Jens Burmeister & TOOLBOX *)
- (* ------------------------------------------------------ *)
- PROGRAM DetBeispiel2;
-
- USES Crt, Dos, DetTool;
-
- FUNCTION TimeStr : STRING;
- VAR
- Hour, Min,
- Second, Sec100 : WORD;
- Temp : STRING [2];
- S : STRING;
- BEGIN
- GetTime(Hour, Min, Second, Sec100);
- Str(Hour:2, Temp); S := Temp;
- Str(Min:2, Temp); S := S + ':' + Temp;
- Str(Second:2, Temp); S := S + ':' + Temp;
- Str(Sec100:2, Temp); TimeStr := S + '.' + Temp;
- END;
-
- VAR
- i, j, k, Dim : WORD;
- Value : REAL;
- A : RealMatrixPtr;
-
- BEGIN
- ClrScr;
- WriteLn('Berechnung der Determinante einer reell',
- 'wertigen Matrix:');
- WriteLn('---------------------------------------',
- '------------------');
- WriteLn('Die Dimension der Matrix wird im Dialog ',
- 'abgefragt.');
- WriteLn('----------------------------------------',
- '-----------------');
- WriteLn('Die Hauptdiagonale A(i,i), i=1..Dim, wird ',
- 'mit den Werten');
- WriteLn('1-1/SQR(i+1) belegt. In der oberen ',
- 'Dreieckshälfte werden');
- WriteLn('zufällig Werte zwischen 1 und 100 eingetragen. ',
- 'Die');
- WriteLn('Determinante sollte dann gegen den Wert 0.5 ',
- 'mit größer');
- WriteLn('werdender Dimension streben.');
- WriteLn('--------------------------------------------',
- '-------------');
- Write ('Dimension der Matrix: '); ReadLn(Dim);
- WriteLn('--------------------------------------------',
- '-------------');
-
- WriteLn('Verfügbarer Arbeitsspeicher in Bytes : ',
- MemAvail:8);
- New(A, Init(Dim));
- WriteLn('Platz für Matrix angefordert! Dimension: ',
- A^.GetDimension:8);
- WriteLn('Verbleibender Arbeitsspeicher in Bytes : ',
- MemAvail:8);
-
- FOR i := 1 TO A^.GetDimension DO BEGIN
- Value := 1 - 1.0 / SQR(i+1);
- A^.SetValue(i, i, Value);
- END;
-
- Randomize;
- FOR i := 1 TO A^.GetDimension DO BEGIN
- j := Random(A^.GetDimension) + 1;
- k := Random(A^.GetDimension) + 1;
- IF j <> k THEN
- IF j > k THEN
- A^.SetValue(j, k, Random(100)+1)
- ELSE
- A^.SetValue(k, j, Random(100)+1)
- END;
-
- WriteLn('Uhrzeit: ', TimeStr, ' Bitte warten.');
- WriteLn('Determinante: ', A^.Determinant);
- WriteLn('Uhrzeit: ', TimeStr);
-
- Dispose(A, Done);
- END.
- (* ------------------------------------------------------ *)
- (* Ende von DET-BSP2.PAS *)
-
-