If abfragen hinter einander



  • Schandmaul schrieb:

    ich seh zwar keinen wirklichen sinn in dem prog aber naja... 😃

    so mal auf die schnelle würd ichs so machen:

    #include <iostream>
    using namespace std; // sonnst mußt du immer std:: vor den funktionen schreiben
    
    int main(void)
    
    {
    	 const int ci_anzahl=6;
    	 int i=0;
    	 double d_zahl[ci_anzahl]={0};//eins, zwei, drei, vier, fuenf, sechs;
    	 int i_praemie[ci_anzahl]={0};//a,b,c,d,e,f;
    	 for(i=0;i<6;++i)         // zähler eins weiter um direkt mit i zu rechnen
    	 {
    		i_praemie[i] = (i*11)+11;
    	 }
    	 cout <<"Die ist ein Praemienprogramm"<<endl;
    	 cout <<"--------------------------------------------------------------"<<endl<<endl;
    	 for(i=0; i<6;++i)     // werte einlesen
    	 {
    		cout <<"Bitte geben sie den Preis von Produkt" << i+1 << "ein: ";
    		cin >>d_zahl[i];
    		cout<<endl;
    	 }
    	 cout <<endl<<"--------------------------------------------------------------"<<endl;
    	 cout <<endl << "Vielen dank fuer ihre eingabe"<<endl;
    	 cout <<endl << "--------------------------------------------------------------"<<endl;
    	 cout <<endl << "Hier nochmal ihre Eingabe:"<<endl;
    	 for (int i=0;i<6 ;++i )      // ausgabe werte
    	 {
    		cout << d_zahl[i] << "\t";
    	 }
    	 cout <<"--------------------------------------------------------------"<<endl<<endl;
    	 bool b_praemie_erteilt=false;
    	 for (i=0;i<5 ;++i )
    	 {
    		for(int x=0; x<6;++x)
    		{
    			if((d_zahl[i]+d_zahl[i+1])==i_praemie[x]) // 2 eigaben nacheinander mit jeder prämie vergleichen
    			{
    				cout <<"eine praemie bekommen"<<endl;
    				cout <<"Die Summe betrug: "<<i_praemie[x]<<endl;
    				b_praemie_erteilt=true; // sobald eine prämie erreicht
    			}
    		}
    	 }
    
    	 cout <<endl;
    	 if(b_praemie_erteilt)
    	 {
    		cout <<"Dies sind die Praemien die sie erhalten haben"<<endl;
    		cout <<"Herzlichen glueckwunsch";
    	 }
    	 else
    		cout<<"keine prämie erreicht, pech gehabt :p"<<endl;
    
    	 cin.get(); //eingabepuffer leeren, gibts auch ne funktion dafür, fällt mir nur grade nich ein
    	 cin.get();
    return 0;
    }
    

    --> is zwar schon spät, könnte das auch gehen ^^
    ich bin mir sicher das kann man noch wesentlich eleganter lösen, aber c++ bin ich auch noch nich soo lange dabei 🙄
    wen du noch fragen hast frag,
    und wenn jemand nen fehler findet, bescheid sagen 😃

    mfg

    ps: versuch doch das nächste mal ein "richtiges" prog zu machen, mit dem man auch was anfangen kann 😉

    Naja... ist vielleicht eleganter gelöst aber 1009927 hatte schon keinen Plan was (D)Evil erzählt hat, wie soll der da deinen Code verstehen! :p 🙂

    Ich gucke mirs nachher mal genauer an, vielleicht kann ich dir helfen... verlass dich aber nicht drauf 😞

    --------------------------------------------------------------------------------

    Also, zunächst...

    Wer hat dir das Programmieren beigebracht?!
    Dein "style" ist nämlich etwas veraltet...^^

    #include <iostream.h>
    #include <conio.h>
    #include <iomanip.h>
    
    void main(void)
    

    Schreib das besser so:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    .
    .
    .
    }
    

    und statt

    getch()
    

    benutzt Du

    cin.get()
    

    Ich denke das müsste Hinhauen! Das is der etwas neuere Stil...^^



  • @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