Beiträge von wiczynski777

    Laut Aufgabenstellung ja nicht
    "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"

    Ich habe mein Programm ein bisschen überarbeitet. Es funktioniert jetzt wenigsens so wie es soll. Als Leihe bin ich mir aber sicher dass es bestimmt noch eine "elegantere" Lösungsweise gibt. Vielleicht hat jemand ja ein paar Tipps für mich. Wäre euch echt dankbar

    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    void minimax ( int * feld, int laenge, int * pmin, int * pmax );
    void main (void)
    {
    unsigned anzahl,wert;
    int min=0, max=0;
    int *tabelle;
    fprintf( stdout, "Dies Programm bestimmt Minimum und Maximum ");
    fprintf( stdout, "einer Menge von Werten der Groesse X\n");
    fprintf( stdout, "Anzahl Werte eingeben: ");
    fflush( stdin );
    scanf_s( "%u", &anzahl);
    tabelle = (int *)malloc(anzahl * sizeof(int));
    for(wert = 0;wert < anzahl; wert++)
    {
    printf("%i. Wert:", wert+1 );
    scanf_s("%i", tabelle + wert);
    }


    minimax( tabelle , anzahl , & min, & max );
    fprintf( stdout, "\nMin=%d Max=%d", min, max);
    free(tabelle);
    }
    void minimax ( int * feld, int laenge, int * pmin, int * pmax )
    {
    int b,c;

    for(b = 1; b < laenge-1; b++)
    {
    c = feld[b];

    if ( (c < feld[b-1]) && (c < feld[b+1]))
    (*pmin)++;

    if ( (c > feld[b-1]) && (c > feld[b+1]))
    (*pmax)++;


    }
    }

    vor der funktion werden die messwerte eingelesen und in einem array gespeichert. Die funktion soll aus dem array die min/max raussuchen (und zwar die anzahl nicht die genauen werte) und über die ihr als parameter übergebene Zeiger ausgeben.

    Nein ich dachte nur wenn ich die Aufgabe vollständig einfüge wird es leichter verständlich sein. Mein Problem ist wie gesagt der Algorithmus und zwar wie oben in der Aufgabenstellung gefordert für lokale Min/Max und nicht die absoluten. Ausgegeben werden soll die Anzahl der gefundenen Extrempunkte
    void minimax ( int * feld, int laenge, int * pmin, int * pmax )
    {
    int i,b,c;

    for ( i=1 ; i<laenge; i++ )
    {
    c = *(feld+i);

    for(b=0; b < laenge; b++)
    {
    if ( (c < *(feld-b)) && (c < feld[b+1]))
    *pmin++;

    else if ( (c > *(feld-b)) && (c > feld[b+1]))
    *pmax++;
    }
    Soweit bin ich im moment aber irgenwie klappt es nicht so ganz

    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.