Modernes C++ programmieren

Okt 23, 2024

lst-0719-godb.cpp

//#(compile) c++; compiler:g132; options:-O3 -std=c++23; libs:-
// https://godbolt.org/z/vMa8bPaob 
#include <vector>
#include <iostream>
#include <algorithm>                // ranges::sort
using std::vector; using std::cout;
double median(vector<int> daten) {  // kopiert
    std::ranges::sort(daten);       // C++20, sonst std::sort()
    auto it = daten.begin();
    auto sz = daten.size();
    if(sz==0) return 0;             // Sonderfall
    // Median ermitteln:
    auto m = (it+sz/2);             // ungefähr die Mitte
    if(sz%2 != 0) {                 // ungerade Anzahl Elemente
        return *m;
    } else {                        // gerade Anzahl Elemente
        return double(*m + *(m-1)) / 2;
    }
}
int main() {
    vector daten1 { 12, 22, 34, 10, 1, 99, 33 };
    cout << median(daten1) << '\n'; // 22
    vector daten2 { 30, 2, 80, 99, 31, 3 };
    cout << median(daten2) << '\n'; // 30.5
}