If abfragen hinter einander



  • @Crew06ZW: Traurig , wenn du den Code von Schandmaul nich verstehst ⚠



  • BorisDieKlinge schrieb:

    @Crew06ZW: Traurig , wenn du den Code von Schandmaul nich verstehst ⚠

    Ich versteh ihn schon, ich bloß jetzt keinne mich reinzudenken! 😉



  • mir is langweilig und ich will auch mal meinen kommentierten senf da lassen ^^

    #include <iostream>
    #include <sstream>
    
    using namespace std;
    
    /**
     * Annahme: Praemien gibs immer dann, wenn die Summe zweier Produkte maximal 66
     * betraegt und die Summe eine "Schnapszahl" ist. Eine Schnapszahl laesst sich
     * immer ohne Rest durch 11 teilen.
     */
    bool isPraemie(int sum)
    {
        if(sum > 66) // zu gross
            return false;
        return sum%11 == 0; // alle schnapszahlen sind praemien
    }
    
    /**
     * Liefert die Eingabe fuer ein Produkt. Hält den eigentlichen Code frei von
     * input Krempel.
     */
    int getEingabe(int i)
    {
        cout << "Bitte geben Sie den Preis von Produkt " << i << " ein: ";
        int val;
        cin >> val; // input streams waeren eleganter
        cout << endl;
        return val;
    }
    
    /**
     * Fuegt den Text fuer eine Praemie dem Ausgabe-String hinzu.
     */
    void addPraemie(stringstream &s, int posProdukt, int preis1, int preis2, int sum)
    {
        s << "Sie erhalten eine Praemie." << endl;
        s << "Preis von Produkt " << posProdukt << " betrug " << preis1 << endl;
        s << "Preis von Produkt " << posProdukt + 1 << " betrug " << preis2 << endl;
        s << "Die Summe betrug: " << sum << endl;
    }
    
    int main()
    {
        int numProdukte = 6; // Anzahl der Produkte
    
        stringstream s;
        int current = 0;
        for(int i = 0; i < numProdukte; ++i)
        {
            int tmp = current; // letzte Eingabe merken
            current = getEingabe(i + 1); // neue Eingabe holen
            int sum = tmp + current;
            if(i > 0) // fuer den ersten Preis allein kann es keine Praemie geben
                if(isPraemie(sum))
                    addPraemie(s, i, tmp, current, sum);
        }
    
        if(s.str().length() > 0) // haben sich Praemien angesammelt?
        {
            cout << s.str() << endl;
            cout << "Herzlichen Glueckwunsch." << endl;
        }
        else // Pech gehabt ;)
        {
            cout << "Keine Praemien erhalten." << endl;
        }
    }
    


  • hallo
    danke für die ganzen antworten
    das programmieren bringt mir ein Lehrer am Zweijährigen Berufskolleg für informatik bei. und die aufgabe habe ich auch nicht selber gemacht es ist nur ne vereinfachte version vom deutschen programmierwettbewerb.



  • Das ist eine aufgabe von deutschen Programmier Wettbewerb? 👎

    Muss ich auch mal hin, wenn das da so einfach ist;)



  • http://www.bwinf.de/index.php?id=165
    ich weiss selber is einfach
    naja mal schaun wie weit ich mit den Pass-Algorithmen komme 😃



  • @1009927
    viel spass dabei ^^
    aber versuche am besten gleich von anfang an "guten" code, zu schreiben.
    schau dir schleifen und funktionen an.
    ja es is verwirrend am anfang,
    aber ich hab auch so angefangen,
    ich hab ewig gebraucht um mich "umzustellen"...

    und wenn was unklar ist, hier im forum findest du (fast) alles
    und irgendjemand hilft dir auch falls du nicht weiter kommst 😉

    @thordk
    sieht ja nett aus, aber
    sag mal, was macht deine main eigentlich nachdem man die letzte zahl eigegeben hat?
    ich glaub nich, dass irgendjemand so schnell lesen kann 🙄

    @rest
    weiß jemand wie man im c++ den eingabepuffer leert? im c mach ich das mit fflush() [ich geb zu ich tu mich schwer mit dem umgewöhnen],
    denn wenn ich 1x cin.get() am schluß schreibe beendet die konsole auch sofort 😕

    mfg



  • Schandmaul schrieb:

    @thordk
    sieht ja nett aus, aber
    sag mal, was macht deine main eigentlich nachdem man die letzte zahl eigegeben hat?
    ich glaub nich, dass irgendjemand so schnell lesen kann 🙄

    na es schiebt die ausgabe in den standard output stream, was konsolenanwendungen halt so an sich haben 😉

    halte nichts davon, irgendwelche krücken in konsolenanwendungen einzubauen, die dem anwender den druck einer taste abfordern, nur um ein konsolenfenster offenzuhalten.



  • aha...
    is ja schön wenn es das irgendwie schiebt,
    aber soll der user das "ergebnis" lesen wenn es nur ein paar ms zu sehen ist? 😕



  • Schandmaul schrieb:

    aha...
    is ja schön wenn es das irgendwie schiebt,
    aber soll der user das "ergebnis" lesen wenn es nur ein paar ms zu sehen ist? 😕

    wtf? wenn ich den krempel in ner konsole ausführ, kann ich die aussgabe solange betrachten, bis mir die gucker ausm kopp fallen.


Anmelden zum Antworten