home *** CD-ROM | disk | FTP | other *** search
- {████████████████████████████████ n-eck.pas ████████████████████████████████████
-
-
-
- ╔════════════════════╗
- ║ IBM-PC ║
- ║ ║
- ║ PC-DOS 3.3 ║
- ║ ║
- ║ TURBO-PASCAL 5.0 ║
- ╚════════════════════╝
-
-
-
- ┌──────────────────────────────────────────────────────────┐
- │ (C) Karl Schlessmann Oken-Gymnasium Vogesenstraße 10 │
- │ 27.04.1989 Tel 0781/76386 7600 Offenburg │
- └──────────────────────────────────────────────────────────┘
-
-
-
- Programm: Umfang und Flächeninhalt eines beliebigen ebenen und durch seine
- n Eckpunkte-Koordinaten gegebenen n-Ecks mit Hilfe der Funktionen
- "n_eck_umfang" und "n_eck_inhalt" aus der Include-Datei "n-eck.inc"
- und Graphik des Polygons mit der Datei "n-eck-gr.inc".
- ───────────────────────────────────────────────────────────────────────────────}
-
- USES CRT, GRAPH;
-
- {$M 65520, 0, 655360 }
-
- CONST max = 3000; { willkürliche Begrenzung auf maximal 3000 Punkte }
- frei = 20; { angezeigte Werte in 20 freien Stellen rechtsbündig }
- nach = 11; { angezeigte Nachkommastellen }
- TYPE typ_wert = EXTENDED;
- TYPE typ_punkte = ARRAY [1 .. max] OF RECORD x, y : typ_wert END;
-
- {$I n-eck.inc }
- {$I n-eck.gra }
-
- {▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Antwort-Funktion ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒}
-
- FUNCTION ja_nein (fragesatz : STRING) : BOOLEAN;
-
- VAR taste : CHAR;
-
- BEGIN
- WHILE KEYPRESSED DO taste := READKEY;
- WRITELN;
- WRITE (#13, fragesatz, ' (j/n) ? '#7); CLREOL;
- REPEAT
- taste := UPCASE (READKEY);
- UNTIL taste IN [^C, #13, #27, 'J', 'N'];
- WRITELN (taste);
- IF (taste = ^C) OR (taste = #27) AND NOT KEYPRESSED THEN BEGIN
- WRITE ('Esc');
- HALT (0);
- END;
- ja_nein := taste IN [#13, 'J'];
- END;
-
- {▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Koordinaten-Eingabe ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒}
-
- PROCEDURE def_n_eck (VAR n : WORD; VAR punkt : typ_punkte);
-
- CONST fehler : WORD = 0;
- VAR k : WORD;
- satz : STRING;
-
- BEGIN
- CLRSCR;
- WRITELN ('Umfang und Flächeninhalt eines ebenen n-Ecks');
- WRITELN ('════════════════════════════════════════════');
- WRITELN ;
- STR (n, satz);
- REPEAT
- WRITE (#13'Anzahl der Eckpunkte (3 .. ', max, ') = ', satz, ' ? '#7); CLREOL;
- READLN (satz);
- GOTOXY (WHEREX, PRED (WHEREY));
- IF satz <> '' THEN VAL (satz, n, fehler);
- UNTIL (n >= 3) AND (n <= max) AND (fehler = 0);
- WRITELN; WRITELN;
- CASE ja_nein ('Punkte zufällig') OF
- TRUE : FOR k := 1 TO n DO WITH punkt [k] DO BEGIN
- x := 10*RANDOM - 5; { nur für Tests, da Kantenüberschneidungen ! }
- y := 10*RANDOM - 5; { nur für Tests, da Kantenüberschneidungen ! }
- END;
- FALSE: FOR k := 1 TO n DO WITH punkt [k] DO BEGIN
- STR (x : frei : nach, satz);
- REPEAT
- WRITE (#13'x [', k : 3, '] = ', satz, ' ? '); CLREOL;
- READLN (satz);
- GOTOXY (WHEREX, PRED (WHEREY));
- IF satz <> '' THEN VAL (satz, x, fehler);
- UNTIL fehler = 0;
- WRITELN;
- STR (y : frei : nach, satz);
- REPEAT
- WRITE (#13'y [', k : 3, '] = ', satz, ' ? '); CLREOL;
- READLN (satz);
- GOTOXY (WHEREX, PRED (WHEREY));
- IF satz <> '' THEN VAL (satz, y, fehler);
- UNTIL fehler = 0;
- WRITELN;
- END;
- END;
- WRITELN;
- END;
-
- {▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Hauptprogramm ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒}
-
- CONST n : WORD = 3;
- taste : CHAR = 'j';
- VAR punkte : typ_punkte;
-
- BEGIN
- REPEAT
- TEXTCOLOR (YELLOW); TEXTBACKGROUND (BLUE);
- def_n_eck (n, punkte);
- WRITELN ('Umfang des ', n, '-Ecks = ',
- n_eck_umfang (n, punkte) : frei : nach);
- WRITELN ('Flächeninhalt des ', n, '-Ecks = ',
- n_eck_inhalt (n, punkte) : frei : nach);
- READLN;
- zeichne_n_eck (n, punkte);
- UNTIL NOT ja_nein ('Nochmal');
- END.
-
- ████████████████████████████████████████████████████████████████████████████████