Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

C-Kurs/Punktstrukturen

In dieser Aufgabe soll eine Programm erstellt werden, dass Punkte in verschiedenen Koordinatensystemen 'verwalten' und beim Rechnen automatisch konvertieren kann.


Aufgaben

Teil a

Schreibe je eine struct punkt_cart und punkt_polar, die einen Punkt in Kartesischen bzw. Polarkoordinaten beschreibt sowie Hilfsfunktionen, um solche Punkte zu erzeugen und die Entfernung zwischen Punkten desselben Koordinatensystems zu berechnen.

Teil b

Schreibe Hilfsfunktionen, die die Punkte von einem Typ in einen anderen konvertieren. Dabei soll die bei C typische Vorgehensweise beachtet werden:

Zunächst wird für den neuen Punkt Speicher alloziiert, dann wird die Hilfsfunktion mit zwei Pointern aufgerufen - dem vorhandenen Punkt und dem Speicherplatz für den umgewandelten Punkt. Der Rückgabewert der Hilfsfunktion soll angeben, ob die Konvertierung erfolgreich war.

Teil c

Schreibe das Programm nun so um, dass es nur noch eine Art von Punkten gibt. Diese soll intern eine union enthalten, um beide Arten von Koordinatensystemen verarbeiten zu können. In der umgebenden struct soll in einem enum der Typ des Koordinatensystems gespeichert werden.

Die Hilfsfunkion zum Berechnen der Entfernungen zwischen Punkten soll nun mit unterschiedlichen Punkten aufgerufen werden können und die korrekte Entfernung der Punkte zueinander ausgeben.


Zusatzaufgabe

Schreibe ein Programm, dass die Koordinaten und Farben von Punkten auf der Standardeingabe entgegennimmt. Anhand der Eingabe soll das Koordinatensystem erkannt werden (float, int) rrggbb oder (int,int) rrggbb.

Das Programm soll dann die Entfernung aller Punkte zueinander berechnen und die Punkte grafisch darstellen.


Kommentare

Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)