home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
1991
/
07_08
/
tricks
/
det_bsp2.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1991-02-21
|
3KB
|
86 lines
(* ------------------------------------------------------ *)
(* 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 *)