Is wichtig bitte



  • Problem ist, dass er die bool werte nicht bei einem erneuten Durchlauf beibehält.
    Hatt jemand ne idee warum und wies geht?

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main()
    {
    char auswahl=0;
    float rechnung=0; 
    bool ba,bb,bc,b1,b2,b3;   
    
    do
    {    
    if(auswahl=='!')
    {
    cout<<endl;
    cout<<"Danke fuer ihre Bestellung"<<endl;
    }
    else
    {
    cout<<endl;
    cout<<"FAT frisch appetitlich traumhaft - freut sich auf ihre Bestelleung:"<<endl;
    }
    
    cout<<endl;
    cout<<"Ihre Bestllung:"<<endl;
    
    ba==true?cout<<"FAT Hamburger"          <<endl:
    bb==true?cout<<"FAT Chocoburger"        <<endl:
    bc==true?cout<<"FAT Frozen Salad"       <<endl:
    b1==true?cout<<"FAT Cola"               <<endl:
    b2==true?cout<<"FAT Lime"               <<endl:
    b3==true?cout<<"FAT Honey Coffe"        <<endl:
    
    cout<<endl;
    cout<<endl;
    cout<<"Ihre Rechnung:  Euro "<<rechnung<<endl;
    
    cout<<endl;
    cout<<"Ihre Wahl:"<<endl;
    cout<<endl;
    cout<<setw(40)<<left<<"a) FAT Hamburger     Euro 1.99"<<setfill(' ')<<right<<"1) FAT Cola         Euro 0.99"<<endl;
    cout<<setw(40)<<left<<"b) FAT Chocoburger   Euro 2.99"<<setfill(' ')<<right<<"2) FAT Lime         Euro 0.99"<<endl;
    cout<<setw(40)<<left<<"c) FAT Frozen Salad  Euro 3.49"<<setfill(' ')<<right<<"3) FAT Honey Coffe  Euro 1.99"<<endl;
    cout<<endl;
    cout<<setw(40)<<left<<"x) Bestellung aufheben"<<setfill(' ')<<right<<"!) Bestellung abgeben"<<endl;
    cout<<endl;
    cout<<">";
    cin>>auswahl;
    cout<<endl;
    cout<<endl;
    
    switch(auswahl)
    {
    case 'a':
         ba=true;
         rechnung+=1.99;
         break;
    
    case 'b':
         bb=true;
         rechnung+=2.99;
         break;
    
    case 'c':
         bc=true;
         rechnung+=3.49;
         break;
    
    case '1':
         b1=true;
         rechnung+=0.99;
         break;
    
    case '2':
         b2=true;
         rechnung+=0.99;
         break;
    
    case '3':
         b3=true;
         rechnung+=1.99;
         break;
    case '!':
         break;
    case 'x':
         ba=false;
         bb=false;
         bc=false;
         b1=false;
         b2=false;
         b3=false;
         rechnung=0;
         break;
    default:
         cout<<"Achtung!!! Falsche Eingabe"<<endl;
         continue;
    }   
    
    }while(auswahl !='q');//Nur den Angestellten bekannt abrechen des Programmes mit "q"
    
    system("Pause");
    return 0;
    }
    

    Vielen Danke schon mal!!

    /edit: code-tags



  • Schlechte Überschrift! 👎



  • Hinweis schrieb:

    Schlechte Überschrift! 👎

    Mag sein, deine Promotion-Tour hilft aber auch nicht weiter.

    @NicNN: Bitte editiere dein Posting und klammere deinen Code mit [ cpp ] [ /cpp ] Tags ein (Ohne Leerzeichen). Dann ist der Code a) formatiert und b) schön bunt so das man sich dein Programm ansehen kann - so wird dir niemand helfen 😉

    MfG SideWinder



  • NicNN schrieb:

    ba==true?cout<<"FAT Hamburger" <<endl: 
    bb==true?cout<<"FAT Chocoburger" <<endl: 
    bc==true?cout<<"FAT Frozen Salad" <<endl: 
    b1==true?cout<<"FAT Cola" <<endl: 
    b2==true?cout<<"FAT Lime" <<endl: 
    b3==true?cout<<"FAT Honey Coffe" <<endl: 
    
    cout<<endl;
    

    WTF hast du dir dabei gedacht?



  • ich will jeweils die bestelltet produkte unternander ausgeben.
    Mit einem klappt das auch wunderbar.



  • Und wenn ich zwei Hamburger bestelle?



  • tut mir leid kanns nicht mehr edditieren da ich keinen accout habe



  • hast recht Hmm
    ne idee wie ichs sonst machen kann?



  • NicNN schrieb:

    ne idee wie ichs sonst machen kann?

    zum Beispiel so:

    #include <iostream>
    using namespace std;
    
    enum Bestellung
    {
        Hamburger,
        Chocoburger,
        Frozen_Salad,
        Cola,
        Lime,
        Honey_Coffee
    };
    
    int main()
    {
        const char * const NAMEN[] = {
            "FAT Hamburger",
            "FAT Chocoburger",
            "FAT Frozen Salad",
            "FAT Cola",
            "FAT Lime",
            "FAT Honey Coffee"};
        int bestellungen[] = {0, 0, 0, 0, 0, 0};
        const int N = sizeof(bestellungen)/sizeof(int);
    
        ++bestellungen[Hamburger];
        ++bestellungen[Chocoburger];
        bestellungen[Cola] += 2;
    
        for(int i = 0; i<N; ++i)
            if(bestellungen[i]>0)
                cout << bestellungen[i] << " x " << NAMEN[i] << endl;
    
        cin.get();
    }
    


  • NicNN schrieb:

    Problem ist, dass er die bool werte nicht bei einem erneuten Durchlauf beibehält.

    Die bool-Werte werden schon beibehalten, aber die Art und Weise wie Du auf einen bool reagierst schließt bei einem Wert ==true die Abfrage aller anderen aus.
    Ändere den Code

    ba==true?cout<<"FAT Hamburger"          <<endl:
                bb==true?cout<<"FAT Chocoburger"        <<endl:
                bc==true?cout<<"FAT Frozen Salad"       <<endl:
                b1==true?cout<<"FAT Cola"               <<endl:
                b2==true?cout<<"FAT Lime"               <<endl:
                b3==true?cout<<"FAT Honey Coffe"        <<endl:
    

    mal nach

    if( ba ) cout<<"FAT Hamburger" <<endl;
            if( bb ) cout<<"FAT Chocoburger" <<endl;
            if( bc ) cout<<"FAT Frozen Salad" <<endl;
            if( b1 ) cout<<"FAT Cola" <<endl;
            if( b2 ) cout<<"FAT Lime" <<endl;
            if( b3 ) cout<<"FAT Honey Coffe"<<endl;
    

    im Übrigen solltest Du alle Werte immer initialisieren, bevor sie abgefragt werden. Also

    bool ba = false; // usw.
    

    Gruß
    Werner



  • Hallo,

    der Code dürfte so gar nicht compilierfähig sein, das die
    letzte Abfrage (?:;) nicht richtig beendet wird. An der
    Strukturierung muss dringen dgearbeitet werden, da der Code
    mindestens um Faktor 2 vereinfacht / verbessert werden kann.

    Grundsätzlich sollte man alle C Abfragen in Klammern setzen.
    Spätestens wenn man ein unsauberes Makro benutzt fällt man
    sonst böse auf die Nase. Eindeutigkeit ist extrem wichtig.


Anmelden zum Antworten