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: Unterschied zwischen den Versionen

K (cp error)
K (verschob „Ckurs/Punktstrukturen“ nach „C-Kurs/Punktstrukturen“)
 
(2 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 6: Zeile 6:
 
=== Teil a ===
 
=== Teil a ===
  
Schreibe je eine struct <tt>punkt_cart</tt> und <tt>punkt_polar</tt>, die einen Punkt in Kartesischen bzw. Polarkoordinaten beschreibt sowie Hilfsfunktionen um solche Punkte zu erzeugen und die Entfernung zwischen Punkten desselben Koordinatensystems zu berechnen.
+
Schreibe je eine <i>struct</i> <tt>punkt_cart</tt> und <tt>punkt_polar</tt>, 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 ===
 
=== Teil b ===
  
Schreibe Hilfsfunktionen, die die Punkte von einem typ in einen anderen konvertieren. Dabei soll die bei C typische Vorgehensweise beachtet werden:
+
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.
+
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 ===
 
=== 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.
+
Schreibe das Programm nun so um, dass es nur noch eine Art von Punkten gibt. Diese soll intern eine <i>union</i> enthalten, um beide Arten von Koordinatensystemen verarbeiten zu können. In der umgebenden <i>struct</i> soll in einem <i>enum</i> 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.
+
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 ===
 
=== Zusatzaufgabe ===
Schreibe ein Programm, dass die Koordinaten und Farben von Punkten auf der Standardeingabe entgegennimmt. Anhand der Eingabe soll
+
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 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.
 
Das Programm soll dann die Entfernung aller Punkte zueinander berechnen und die Punkte grafisch darstellen.

Aktuelle Version vom 5. März 2013, 17:37 Uhr

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 ;)