C++ :: Aufgabe #301

1 Lösung Lösung öffentlich

Differenz(en) von Eingabewerten

Fortgeschrittener - C++ von JKooP - 04.10.2020 um 12:26 Uhr
Schreibe eine Methode/Funktion, die die maximale bzw. minimale Differenz von Eingabewerten ermittelt.

z.B. f(3, -2, 18, -1, 50)

Min: 1, da Absolut(-2 - -1) = 1
Max: 52, da Absolut(50 - -2) = 52

Viel Spaß

Lösungen:

vote_ok
von JKooP (18090 Punkte) - 08.01.2021 um 17:19 Uhr
C++ 17
Quellcode ausblenden C-Code
#include <iostream>
#include <tuple>
#include <vector>
#include <algorithm>
using namespace std;

tuple<double, double> get_difference(vector<double> p)
{
    sort(p.begin(), p.end());
    double min = 0, max = 0;
    if (p.size() > 1) max = abs(*max_element(p.begin(), p.end()) - *min_element(p.begin(), p.end()));
    if (p.size() > 2) min = abs(p[1] - *min_element(p.begin(), p.end()));
    return make_tuple(max, min);
}

int main()
{
    auto diff{ get_difference({ 3, -2, 18, -1, 50 }) };
    std::cout << "Max: " << get<0>(diff) << "\tMin: " << get<1>(diff);
}