Zeiger auf Maximum



  • Also laut Vorgabe ...die einen Zeiger auf das Maximum der darin enthaltenen Werte zurückgibt.



  • Die if-Abfragen die sind ja auch beide unterschiedlich. Da stimmt dann wohl auch die 1. oder ?

    if( array[ i ] > *tmp )
    


  • Dai schrieb:

    Ich hab mir das nochmal angeschaut, bin mir nun aber immer noch nicht sicher welche der Lösungen nun richtig ist:

    Beides ist für den jeweiligen Code korrekt, aber nur Version 2 für die Aufgabenstellung.

    Schreiben Sie eine Funktion max, der ein Array von n Zeigern auf float-Variablen übergeben wird

    float* max(float array[], size_t n)
    {
        assert(n != 0); // <cassert>
        float* tmp = &array[0];
        for (size_t i = 1; i < n; ++i)
        {
            if (array[i] > *tmp) // wichtig: kein Adress-Operator sondern eine Indirektion
                tmp = &array[i];
        }
        return tmp;
    }
    

    Dies wäre eine typische Implementierung, das Problem ist nur, sie passt nicht zur Aufgabenstellung. Deshalb ist folgende Lösung korrekt.

    float* max(float* array[], size_t n)
    {
        assert(n != 0); // <cassert>
        float* tmp = array[0];
        for (size_t i = 1; i < n; ++i)
        {
            if (*array[i] > *tmp) // wichtig: kein Adress-Operator sondern eine Indirektion
                tmp = array[i];
        }
        return tmp;
    }
    

Anmelden zum Antworten