Autor: Greilberger Judith MatNr: 0025621 BspNr: 1152 Beschreibung: Ein Punkt und ein Polygon (geschlossener Streckenzug) werden eingelesen; es wird festgestellt, ob der Punkt innerhalb oder außerhalb des Polygons liegt. Dieses Programm liest zuerst die Koordinaten des Polygons mittels einem 2-dimensionalen arrays ein (polypoints), danach die Koordinaten des Startpunktes (startpunkt). Anschließend wird 'fehler' einen boolschen Wert zugewiesen. Die try-catch-Funktion hat die Aufgabe die eingelesenen Werte auf ihre Richtigkeit zu überprüfen. Wenn ein Zeichen nicht einem 'integer' entspricht, fängt 'catch' die EprogException ab und schreibt als Ausgabe '?' gefolgt von einem Zeilenvorschub. In der Prozedur 'checkpolygon' wird überprüft, ob sich in dem eingelesenen Polygon keine Geraden schneiden. Wenn das allerdings schon passiert, wird 'FALSCHE EINGABE' ausgegeben. EvenOdd gibt dann 1 oder 0 aus, ob die Geraden, die geschnitten werden, ungerade oder gerade sind.Folgende Prozedur überprüft, ob das Polygon korrekt ist; also ob sich keine Strecken schneiden.schneiden einander zwei Strecken -> FALSE,schneiden einander die Strecken nicht -> TRUE Die folgende Doppelschleife prüft jede Strecke des Polygons mit jeder anderen Strecke des Polygons auf (unzulässige) Schnittpunkte; Ausnahmen: Die unmittelbar aufeinander folgenden Strecken werden nicht geprüft -> diese müssen einander in den Eckpunkten schneiden Die kleinen Prozeduren geben den jeweiligen min- oder max-wert der Koodinaten aus. Nächste Prozedur prüft alle Sonderfälle der Strecken des Polynoms (parallel, identisch, steigung unendlich (= parallel zur y-Achse), ...), schneiden sich die Geraden -> Polynom nicht korrekt schneiden sie einander nicht (parallele geraden --> polynom richtig) Der nächste Abschnitt prüft,ob es innerhalb von 2 Rechtecken, die von x- und y- koordinaten von 2 Geraden aufgespannt werden, einen Schnittpunkt gibt, sodass sich 2 Geraden des Polygons schneiden und somit das Polygon nicht korrekt ist. Findet eine Gerade durch den Startpunkt, welche keinen Stützpunkt des Polygons schneidet, und zählt gültige Schnittpunkte. Ich stelle also ein Gerade auf, welche parallel zur x-Achse nach rechts zieht. Nun prüfe ich, ob diese Gerade das Polygon a.) überhaupt schneidet (wenn nicht, bin ich fertig b.) wenn sie schneidet, ob sie keinen Stützpunkt durchläuft und gebe die Gerade zurück. AD b.) Wenn ein Stützpunkt durchlaufen wird, erhöhe ich die y-Koordinate von ziel_y -die Gerade wird steiler- so oft, bis kein Stützpunkt mehr durchlaufen wird. (maximal 8x) Lässt sich von findeGerade eine Gerade suchen die keinen Stützpunkt des Polygons schneidet. Und berechnet -sofern überhaupt ein Schnittpunkt auftritt- die Anzahl der Schnittpunkte der ermittelten Geraden mit dem Polynom.