Berechne mit dieser Funktion den Durchschnittswert eines Arrays.
template <typename T>
T averageValue(T array[], int size) {
T sum = 0;
for (int i = 0; i < size; i++) {
sum += array[i];
}
float average = float(sum) / size;
return average;
}
Lass uns den Code Schritt für Schritt verstehen.
template <typename T>
Damit der Code möglichst dynamisch funktioniert und eine Funktion mehrere Datentypen handhaben kann, verwendet man ein sogenanntes "template". In diesem Fall wird der Templateparameter mit dem Namen "T" deklariert. Link
T averageValue(T array[], int size)
Hier findet die Funktionsdefinition statt. Man gibt den Datentyp der Rückgabe (T = Rückgabe im Format des Templateparameters), den Namen der Funktion (averageValue) und den Datentyp der Übergabeparameter mitsamt dem Namen (T array[], int size) an. Der Templateparameter "T" ersetzt vorerst den Datentyp, bis ein Funktionsaufruf stattfindet. Erst bei der Übergabe kann der Datentyp, der übergebenen Variable "array[]", dem Templateparameter "T" zugewiesen werden.
T sum = 0
Die Variable "sum" wird als Puffer verwendet um die (Zwischen-)Summe zu speichern. Sie ist vom Typ T, da auch dieser Wert dem Typ des Array entsprechen muss. Der Initialwert wird bei dieser Deklaration auf 0 gesetzt.
for (uint i = 1; i < size; i++)
Diese for-Schleife loopt solange über mein übergebenes Array, bis alle Elemente aufsummiert worden sind. Daher muss ich als Übergabeparameter auch die Größe vom Array übergeben, damit die Anzahl der Schleifendurchläufe begrenzt wird.
sum += array[i]
In jedem Durchlauf der for-Schleife wird der Wert an der Stelle "i" im Array zur Zwischensumme addiert.
float average = float(sum) / size
Hier wird zusätzlich eine Variable vom Typ float erstellt, der Durchschnitt wird berechnet und initial in die erstellte Variable "average" geschrieben.
Dieser Schritt ist lediglich zur Veranschaulichung der Berechnung da.
return average
Ist der Durchnittswert berechnet können wir diesen mit dem return-Statement zurückgeben.
Die Berechnung könnte auch im return-Statement stattfinden.