Aufgabe switch case



  • Ich würde dann sowas machen (Pseudospreche):
    if stück > 9 Rabattstufe = 1
    else if stück > 50 Rabattstufe = 2

    und dann einen

    switch Rabattstufe
    case 1
    case 2

    Damit wären wir fast bei den völlig absurden Strategien angelangt. Warum nicht so:

    switch (me) {
        default:
            machs_mit_if();
    }
    

    🙂



  • pointercrash() schrieb:

    Ich würde dann sowas machen (Pseudospreche):
    if stück > 9 Rabattstufe = 1
    else if stück > 50 Rabattstufe = 2

    nee, sprünge sind z.b. doof, wenn das zielsystem eine instruction pipeline hat. ausrechnen des switch-wertes ist meistens vorteilhafter.
    🙂



  • ;fricky schrieb:

    pointercrash() schrieb:

    Ich würde dann sowas machen (Pseudospreche):
    if stück > 9 Rabattstufe = 1
    else if stück > 50 Rabattstufe = 2

    nee, sprünge sind z.b. doof, wenn das zielsystem eine instruction pipeline hat. ausrechnen des switch-wertes ist meistens vorteilhafter.
    🙂

    Jau, bauen wir erst die Hardware und passen dann das Rabattsystem an.
    😃



  • Big Brother schrieb:

    Jau, bauen wir erst die Hardware und passen dann das Rabattsystem an.

    wie meinen?
    🙂



  • Direktes Ausrechnen des switch Wertes dürfte in der Praxis recht selten klappen. Da ist if soundoviel Stück then soundsoviel Rabatt schon eher an der Praxis dran. Oda watt.

    Gruß,
    B.B.



  • Big Brother schrieb:

    Direktes Ausrechnen des switch Wertes dürfte in der Praxis recht selten klappen.

    machmal klappt es. und wenn es klappt, ist es meistens schneller.
    🙂



  • ;fricky schrieb:

    machmal klappt es. und wenn es klappt, ist es meistens schneller.

    wollen wir (((n>9)+(n>50)+(n>99))*5) als if-orgie zählen oder als berechnung? falls nicht berechnung, würdest du eine berechnung vorschlagen?



  • volkard schrieb:

    wollen wir (((n>9)+(n>50)+(n>99))*5) als if-orgie zählen oder als berechnung? falls nicht berechnung, würdest du eine berechnung vorschlagen?

    (n>9)+(n>50)+(n>99) ist doch schon gut berechnet, nur dieses *5 würde ich weglassen.
    🙂



  • Wenn man schon *5 hat, braucht man doch kein switch mehr...

    int a = ((n>9)+(n>50)+(n>99))*5;
    printf("Sie bekommen einen Mengenrabatt von %d%%.", a);
    


  • #include <iostream>
    using namespace std;
    int main()
    
    {
    int anz; 	// Anzahl der Produkte
    int rabattstufe
    float preis1;
    float preis2;
    float preis3;
    float preis4;
    
    cout << "Geben Sie an wieviele Produkte Sie kaufen \n";
    cin >> anz;
    
    preis1 = anz * 100;
    preis2 = anz * 100 * 0.95;
    preis3 = anz * 100 * 0.9;
    preis4 = anz * 100 * 0.85;
    
    {
    if      (anz >= 0 and anz <= 9) rabattstufe = 1;
    else if (anz >= 10 and anz <= 50) rabattstufe = 2;
    else if (anz >= 51 and anz <= 99) rabattstufe = 3;
    else if (anz >=100 and anz <= 9999999999) rabattstufe = 4;
    
    switch (rabattstufe)
    {
        case 1 : cout << preis1 ; break;
        case 2 : cout << preis2 ; break;
        case 3 : cout << preis3 ; break;
        case 4 : cout << preis4 ; break;
    }
    }
    return 0;
    }
    

    Ich weiß es ist bisschen spät.. aber ich bin gerade auf dieses Forum gestoßen und bin totaler noob was programmieren betrifft. daher meine Frage falls dieses Forum noch aktiv ist.
    Kann man das so lösen oder ist dies nicht gewünscht?


  • Mod

    Hi, es spricht zwar allgemein nicht direkt etwas dagegen, Fragen zu alten Threads zu stellen, aber dein Beitrag hier ist schon etwas komisch:
    -Es ist eine Antwort zu einer uralten Frage, die schon längst beantwortet ist
    -An der Antwort sind mehrere Dinge falsch:
    --Es ist C++.
    --Es löst die Aufgabe nicht wirklich gut, sondern versucht bloß die Klausel "benutzen sie die switch-Anweisung" rein formell zu erfüllen. Genausogut hättest du auch alles in der if-Kaskade machen können (was eine vernünftige Lösung der Aufgabe, aber ohne switch, wäre) und am Ende ein leeres switch. Dann hättest du auch eine switch-Anweisung benutzt.
    --Geld und Fließkommazahlen geht gar nicht. Das macht man nicht als Lösungsvorschlag vor.


Anmelden zum Antworten