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