home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 07 / beilage / n_eck.inc < prev    next >
Encoding:
Text File  |  1989-04-27  |  2.2 KB  |  62 lines

  1. {████████████████████████████████ n-eck.inc ████████████████████████████████████
  2.  
  3.  
  4.  
  5.                             ╔════════════════════╗
  6.                             ║       IBM-PC       ║
  7.                             ║                    ║
  8.                             ║     PC-DOS 3.3     ║
  9.                             ║                    ║
  10.                             ║  TURBO-PASCAL 5.0  ║
  11.                             ╚════════════════════╝
  12.  
  13.  
  14.  
  15.          ┌──────────────────────────────────────────────────────────┐
  16.          │  (C) Karl Schlessmann  Oken-Gymnasium  Vogesenstraße 10  │
  17.          │      27.04.1989        Tel 0781/76386  7600 Offenburg    │
  18.          └──────────────────────────────────────────────────────────┘
  19.  
  20.  
  21.  
  22. Funktionen zur Berechnung von Umfang und Flächeninhalt eines ebenen n-Ecks
  23. ───────────────────────────────────────────────────────────────────────────────}
  24.  
  25. {███████████████████████████████ n-Eck-Umfang █████████████████████████████████}
  26.  
  27. FUNCTION n_eck_umfang (n : WORD; VAR punkte) : EXTENDED;
  28.  
  29. CONST max      = 3000;
  30. TYPE  typ_wert = EXTENDED; { oder SINGLE, REAL, DOUBLE                         }
  31. VAR   k        : WORD;
  32.       umfang   : typ_wert;
  33.       punkt    : ARRAY [1 .. max] OF RECORD x, y : typ_wert END ABSOLUTE punkte;
  34.  
  35. BEGIN
  36.   umfang := 0;
  37.   IF (n < 2) OR (n > max) THEN n := 0;
  38.   FOR k := 1 TO n DO WITH punkt [SUCC (k MOD n)] DO
  39.     umfang := umfang + SQRT (SQR (x - punkt [k].x) + SQR (y - punkt [k].y));
  40.   n_eck_umfang := umfang;
  41. END;
  42.  
  43. {███████████████████████████████ n-Eck-Inhalt █████████████████████████████████}
  44.  
  45. FUNCTION n_eck_inhalt (n : WORD; VAR punkte) : EXTENDED;
  46.  
  47. CONST max      = 3000;
  48. TYPE  typ_wert = EXTENDED; { oder SINGLE, REAL, DOUBLE                         }
  49. VAR   k        : WORD;
  50.       inhalt   : typ_wert;
  51.       punkt    : ARRAY [1 .. max] OF RECORD x, y : typ_wert END ABSOLUTE punkte;
  52.  
  53. BEGIN
  54.   inhalt := 0;
  55.   IF (n < 2) OR (n > max) THEN n := 0;
  56.   FOR k := 1 TO n DO WITH punkt [SUCC (k MOD n)] DO
  57.     inhalt := inhalt + (x + punkt [k].x)*(y - punkt [k].y);
  58.   n_eck_inhalt := ABS (inhalt/2);
  59. END;
  60.  
  61. {██████████████████████████████████████████████████████████████████████████████}
  62.