Kann mir jemand vielleicht bei dieser Aufgabe helfen irgendwie steh ich da auf dem Schlauch und komme nicht auf den Algorithmus.
In einem Projekt wird eine Funktion
LokalMinMax benötigt, die in einer zeitlichen Folge abgetasteter Messwerte
x(t1), x(t2), usw. nach lokalen Minima und Maxima sucht.
Ein lokales Maximum in einer diskreten Folge von Werten ist ein Wert, der größer ist als sein Vorgänger und
sein Nachfolger. Entsprechend ist ein lokales Minimum ein Wert, der kleiner ist als sein Vorgänger und sein
Nachfolger. Der erste und der letzte Wert in der Folge hat keinen Vorgänger bzw. Nachfolger, weswegen
über diese beiden Werte keine Aussage gemacht werden kann. Wir nehmen an, dass die Werte stets in so
dichter Folge gespeichert vorliegen, dass kein lokales Minimum oder Maximum für unsere Funktion unbemerkt
bleibt.
1.1 Nehmen Sie an, die Messwerte seien in einem Feld gespeichert, und die Indizes entsprechen den fortlaufenden
Messzeitpunkten. Stellen Sie den Algorithmus für die Bestimmung der Anzahl gefundener lokaler
Minima und der Anzahl gefundener lokaler Maxima als Struktogramm mit allen benötigten Größen in C dar,
aber zunächst ohne umgebenden Funktions- und Programmrahmen.
1.2 Formulieren Sie nun eine Funktion, die den Algorithmus nach 1.1 enthält. Das Feld mit den Messwerten
soll zum Gültigkeitsbereich der aufrufenden Funktion gehören und dort in irgendeiner Länge angelegt worden
sein. Die Anzahl gefundener lokaler Minima und Maxima geht als Ergebnis zurück an die aufrufende Funktion.
1.3 Formulieren Sie eine aufrufende Anwendung in der Funktion
main in möglichst knapper Form. In ihr soll
der Speicher für die Messwerte in benutzerdefinierter Größe zur Laufzeit dynamisch angelegt werden. Bevor
die Anwendung LokalMinMax aufruft, holt sie sich die Messwerte mit der hier nur als Aufruf vorhandenen
Funktion holeMesswerte per Zeigerreferenz.