Max, min, Summe und Durchschnitt berechnen

C++:
#include <iostream>
#include <vector>
#include <string>

int main(int argc, char **argv)
{
    if (argc == 2)
    {
        std::string s = argv[1];
        std::vector<int> ints;
        size_t pos = 0;
        std::string token;
        while ((pos = s.find(",")) != std::string::npos)
        {
            token = s.substr(0, pos);
            s.erase(0, pos + 1);
            ints.push_back(std::stoi(token));
        }
        ints.push_back(std::stoi(s));

        double min = ints[0], max = ints[0], sum = 0, avg = 0;
        for (size_t i = 0; i < ints.size(); i++)
        {
            int j = ints[j];
            if (j < min)
                min = j;
            if (j > max)
                max = j;
            sum += j;
            avg += (double)j / (double)ints.size();
        }
        std::cout << min << ", " << max << ", " << ints.size() << ", " << sum << ", " << avg << std::endl;
    }
    return 0;
}
 
Sorry, da war noch ein kleiner Schnitzer drin (int j = ints[j]😉:
C++:
#include <cstdlib>
#include <iterator>
#include <vector>
#include <string>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <numeric>

int main(int argc, char **argv)
{
    if (argc == 2)
    {
        std::string s = argv[1];
        std::replace(std::begin(s), std::end(s), ',', ' ');
        std::istringstream iss(s);
        std::vector<int> values(std::istream_iterator<int>{iss}, std::istream_iterator<int>{});

        auto min_max = std::minmax_element(std::begin(values), std::end(values));
        auto sum = std::accumulate(std::begin(values), std::end(values), 0);
        auto average = sum / static_cast<double>(values.size());

        std::cout << "Minimum: " << *min_max.first
                  << "\nMaximum: " << *min_max.second
                  << "\nAnzahl: " << values.size()
                  << "\nSumme: " << sum
                  << "\nDurchschnitt: " << std::fixed << std::setprecision(1) << average << "\n\n";

        return 0;
    }
    return 1;
}
 

Zurück
Oben