Ich hab schnell umgetzt wie ich mir vorstelle, dass die Wahl bei der SPOE gelaufen ist 😉

6 comments
  1. Falls es jemand selbst ausführen möchte:
    “`
    #include <iostream>
    #include <vector>
    #include <unistd.h>
    #include <random>
    #include <ctime>
    #include <functional>

    #define MAX_URNEN 5

    bool randomBool()
    {
    static auto gen = std::bind(std::uniform_int_distribution<>(0,1),std::default_random_engine());
    return gen();
    };

    enum class Tagesverfassung
    {
    SCHLECHT_UND_DEMOTIVIERT,
    ALLES_OASCH,
    SUPER
    };

    enum class Stimmzettel
    {
    ENTHALTUNG,
    BABLER,
    DOSKOZIL
    };

    class Wahlurne
    {
    public:
    Wahlurne(int stimmen);
    Wahlurne(const Wahlurne& w) = delete;
    ~Wahlurne();

    std::vector<Stimmzettel> getAlleStimmzettel() { return alle_stimmzettel_; }

    private:

    std::vector<Stimmzettel> alle_stimmzettel_;
    };

    Wahlurne::~Wahlurne()
    {
    alle_stimmzettel_.clear();
    };

    Wahlurne::Wahlurne(int stimmen)
    {
    for(int i = 0; i < stimmen; i++)
    {
    int x = 3;
    while(x > 2)
    {
    x = 1 + randomBool();
    }
    if(i % 21 == 0)
    {
    x = 0;
    }
    alle_stimmzettel_.push_back(static_cast<Stimmzettel>(x));
    }
    };

    void spoeWahlKommission(int tagesverfassung, std::vector<Wahlurne*>& urnen)
    {
    int babler = 0;
    int doskozil = 0;
    int enthaltungen = 0;
    int abgegebene_stimmen = 0;

    std::random_device dev;
    std::mt19937 rng(dev());
    std::uniform_int_distribution<int> dist21(1,21);

    Tagesverfassung verfassung = static_cast<Tagesverfassung>(tagesverfassung);
    switch (verfassung)
    {

    case Tagesverfassung::SCHLECHT_UND_DEMOTIVIERT:
    {
    for(auto urne : urnen)
    {
    abgegebene_stimmen += urne->getAlleStimmzettel().size();
    bool bias = randomBool();
    for(auto stimme : urne->getAlleStimmzettel())
    {
    switch (stimme)
    {
    case Stimmzettel::ENTHALTUNG:
    enthaltungen++;
    break;

    case Stimmzettel::BABLER:
    babler++;
    break;

    case Stimmzettel::DOSKOZIL:
    doskozil++;
    break;
    }
    }
    babler = bias ? babler – dist21(rng) : babler + dist21(rng);
    doskozil = bias ? doskozil + dist21(rng) : doskozil – dist21(rng);
    delete urne;
    }
    break;
    }

    case Tagesverfassung::ALLES_OASCH:
    {
    for(auto urne : urnen)
    {
    abgegebene_stimmen += urne->getAlleStimmzettel().size();
    delete urne;
    }
    std::uniform_int_distribution<int> distAll(1,abgegebene_stimmen);
    babler = distAll(rng) – dist21(rng);
    doskozil = abgegebene_stimmen – babler;
    enthaltungen = dist21(rng);
    break;
    }

    case Tagesverfassung::SUPER:
    //dieser case wird nie eintreffen, allerdings musst auch die funktionierende Version einbauen
    {
    for(auto urne : urnen)
    {
    abgegebene_stimmen += urne->getAlleStimmzettel().size();
    for(auto stimme : urne->getAlleStimmzettel())
    {
    switch (stimme)
    {
    case Stimmzettel::ENTHALTUNG:
    enthaltungen++;
    break;

    case Stimmzettel::BABLER:
    babler++;
    break;

    case Stimmzettel::DOSKOZIL:
    doskozil++;
    break;
    }
    }
    delete urne;
    }
    break;
    }
    }
    std::cout << “************************************************************************************************************************” << std::endl;
    std::cout << “* Liebe Genossinnen und Genossen, hiermit präsentiere ich Ihnen das Ergebnis der heutigen Wahl zum Parteivorsitzendem: *” << std::endl;
    std::cout << “************************************************************************************************************************” << std::endl;
    std::cout << “n+++ Mit ” << ((babler > doskozil) ? babler : doskozil) << ” Stimmen präsentieren wir Ihnen hiermit ” << ((babler > doskozil) ? “Andreas Babler” : “Hans Peter Doskozil”)
    << ” als Unseren neuen Bundesparteivorsitzenden!!! +++ *applaus applaus*” << std::endl;
    std::cout << “nDas gesamte Ergebnis lautet wie folgt:nn” << “1. mit ” << ((babler > doskozil) ? babler : doskozil) << ” Stimmen: ” << ((babler > doskozil) ? “Andreas Bablern” : “Hans Peter Doskoziln”)
    << “2. mit ” << ((babler < doskozil) ? babler : doskozil) << ” Stimmen: ” << ((babler < doskozil) ? “Andreas Bablern” : “Hans Peter Doskoziln”) << “Und ” << enthaltungen << ” Enthaltungen.” << std::endl;
    std::cout << “Insgesamt wurden ” << abgegebene_stimmen << ” Stimmen abgegeben.n” << std::endl;
    };

    int main()
    {
    std::vector<Wahlurne*>urnen;

    std::cout << “Willkommen auf dem a.o. SPÖ Parteitag 2023!” << std::endl;
    std::cout << “Liebe Genossinnen und Genossen, hier nun die Reden unserer Kandidaten:” << std::endl;
    sleep(2);
    for(int j = 0; j <= 3; j++)
    {
    sleep(1);
    std::cout << “bla bla” << std::endl;
    sleep(1);
    std::cout << “bla” << std::endl;
    sleep(1);
    std::cout << “bla bla bla” << std::endl;
    }
    std::cout << “BLA!!!n” << std::endl;
    std::cout << “Lasst die Wahlen beginnen! Es stehen Ihnen am Eingang der Spritzweinbar ” << MAX_URNEN << ” Urnen zurnStimmabgabe bereit..” << std::endl;

    for(int i = 0; i < MAX_URNEN; i++)
    {
    int anzahl = 0;
    std::cout << “nBitte geben Sie die Anzahl der abgegebenen Stimmen für Urne ” << i + 1 << ” bekannt:” << std::endl;
    std::cin >> anzahl;
    Wahlurne* urne = new Wahlurne(anzahl);
    urnen.push_back(urne);
    }

    std::cout << “nDanke für die rege Teilnahme! Nun übernimmt unsere Wahlkommision.n(Das könnte ein bissi dauern)n” << std::endl;
    auto gen = std::bind(std::uniform_int_distribution<>(0,1),std::default_random_engine());

    sleep(7);
    spoeWahlKommission(randomBool(), urnen);

    std::cout << “nVielen Dank für Ihren Besuch und Ihre Beteiligung am a.o. SPÖ Parteitag 2023!” << std::endl;

    return 0;
    }

    “`

  2. GZ, keine Tests geschrieben. Kannst sofort als Lead Entwickler in der SPÖ Zentrale anfangen.

Leave a Reply