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

  1. (* ------------------------------------------------------ *)
  2. (*                    DET-BSP2.PAS                        *)
  3. (*          (c) 1991 Jens Burmeister & TOOLBOX            *)
  4. (* ------------------------------------------------------ *)
  5. PROGRAM DetBeispiel2;
  6.  
  7. USES Crt, Dos, DetTool;
  8.  
  9.   FUNCTION TimeStr : STRING;
  10.   VAR
  11.     Hour, Min,
  12.     Second, Sec100 : WORD;
  13.     Temp           : STRING [2];
  14.     S              : STRING;
  15.   BEGIN
  16.     GetTime(Hour, Min, Second, Sec100);
  17.     Str(Hour:2,   Temp);    S := Temp;
  18.     Str(Min:2,    Temp);    S := S + ':' + Temp;
  19.     Str(Second:2, Temp);    S := S + ':' + Temp;
  20.     Str(Sec100:2, Temp);    TimeStr := S + '.' + Temp;
  21.   END;
  22.  
  23. VAR
  24.   i, j, k, Dim : WORD;
  25.   Value        : REAL;
  26.   A            : RealMatrixPtr;
  27.  
  28. BEGIN
  29.   ClrScr;
  30.   WriteLn('Berechnung der Determinante einer reell',
  31.           'wertigen Matrix:');
  32.   WriteLn('---------------------------------------',
  33.           '------------------');
  34.   WriteLn('Die Dimension der Matrix wird im Dialog ',
  35.           'abgefragt.');
  36.   WriteLn('----------------------------------------',
  37.           '-----------------');
  38.   WriteLn('Die Hauptdiagonale A(i,i), i=1..Dim, wird ',
  39.           'mit den Werten');
  40.   WriteLn('1-1/SQR(i+1) belegt. In der oberen ',
  41.           'Dreieckshälfte werden');
  42.   WriteLn('zufällig Werte zwischen 1 und 100 eingetragen. ',
  43.           'Die');
  44.   WriteLn('Determinante sollte dann gegen den Wert 0.5 ',
  45.           'mit größer');
  46.   WriteLn('werdender Dimension streben.');
  47.   WriteLn('--------------------------------------------',
  48.           '-------------');
  49.   Write  ('Dimension der Matrix: '); ReadLn(Dim);
  50.   WriteLn('--------------------------------------------',
  51.           '-------------');
  52.  
  53.   WriteLn('Verfügbarer   Arbeitsspeicher in Bytes : ',
  54.            MemAvail:8);
  55.   New(A, Init(Dim));
  56.   WriteLn('Platz für Matrix angefordert! Dimension: ',
  57.           A^.GetDimension:8);
  58.   WriteLn('Verbleibender Arbeitsspeicher in Bytes : ',
  59.           MemAvail:8);
  60.  
  61.   FOR i := 1 TO A^.GetDimension DO BEGIN
  62.     Value := 1 - 1.0 / SQR(i+1);
  63.     A^.SetValue(i, i, Value);
  64.   END;
  65.  
  66.   Randomize;
  67.   FOR i := 1 TO A^.GetDimension DO BEGIN
  68.     j := Random(A^.GetDimension) + 1;
  69.     k := Random(A^.GetDimension) + 1;
  70.     IF j <> k THEN
  71.       IF j > k THEN
  72.         A^.SetValue(j, k, Random(100)+1)
  73.       ELSE
  74.         A^.SetValue(k, j, Random(100)+1)
  75.   END;
  76.  
  77.   WriteLn('Uhrzeit: ', TimeStr, '  Bitte warten.');
  78.   WriteLn('Determinante: ', A^.Determinant);
  79.   WriteLn('Uhrzeit: ', TimeStr);
  80.  
  81.   Dispose(A, Done);
  82. END.
  83. (* ------------------------------------------------------ *)
  84. (*              Ende von DET-BSP2.PAS                     *)
  85.  
  86.