#include <print>
#include <string>
using namespace std::string_literals;

// Depoteintraege definieren
std::pair<float, std::string> aktien[] {
    {47.60f,"Daimler"s},
    {141.88f,"VW"s},
    {62.30,"BMW"s},
    {31.18f,"General Motors"s}};
// Anzahl der Depoteintraege
constexpr auto SSIZE = sizeof(aktien)/sizeof(aktien[0]);

int main()
{
    size_t index;

    // Aktienkurs ausgeben
    std::println("Aktienkurse:\n-----------:");
    for (const auto& [kurs, aktie]: aktien)
    {
        std::println("Aktie: {}, Kurs: {:.2F}", aktie, kurs);
    }

    // VW Aktie um 111.11 erhöhen
    aktien[1].first += 5.0f;
    std::println("\n** VW Aktie um 5.00 erhoeht! **");

    // Aktien nach Wert sortieren
    bool changed;
    do
    {
        changed = false;
        for (index=0; index<SSIZE-1; index++)
        {
            // Vergleicht primär Kurse, sekundär Hersteller
            if (aktien[index]>aktien[index+1])
            {
                auto temp{ std::move(aktien[index]) };
                aktien[index] = std::move(aktien[index+1]);
                aktien[index+1] = std::move(temp);
                changed = true;
            }
        }
    } while (changed);

    // Sortierte Kurse nach Wert ausgeben
    std::println("Aktien nach Kurswert sortiert:\n"
                   "-------------------------");
    for (const auto& [kurs, aktie] : aktien)
    {
        std::println("Aktie: {}, Kurs: {:.2F}",
                       aktie, kurs);
    }
}
