Kurze Frage: Wie funktioniert das mit dem Betrag bei C++?



  • Kassierer schrieb:

    #include <cmath>
    .. oder Rückgeld gleich richtig ausrechnen. Ist es negativ hast Du zu wenig bezahlt.

    das mit cmath hat leider nichts gebracht. Habe schon was eingebaut, dass eine Meldung erscheint, wenn das eingegebene Geld den Preis übersteigt, jedoch kommt dann raus

    "Ihnen fehlen noch -2 Euro" 😃



  • if (geld_bezahlt>=preis)
    {
        int rueckgeld = geld_bezahlt-preis;
        std::cout<<"Gekauft!\n";
        if (rueckgeld!=0)
            std::cout<<rueckgeld;
    }
    else
        std::cout<<"Nicht genug Geld! Ihnen fehlen nocht "<<preis-geld_bezahlt<<" Euro!\n";
    

    Es geht doch auch alles so. Du musst nur die Rechnung umdrehen.


  • Mod

    wisnia schrieb:

    das mit cmath hat leider nichts gebracht.

    [Rewind] schrieb:

    Ohne Code können wir dir nicht helfen.



  • Rückgeld = gegebenes Geld - Preis

    wenn das negativ wird, fehlt was. Wie wäre es mit einer if-Abfrage und der Ausgabe:

    if( rueckgeld < 0 )
        cout "ich bekomme noch" << -rueckgeld << "EUR von Ihnen";
    

    programmierst Du unter Windows? vielleicht ist abs da als MACRO definiert



  • hey danke, bin schon selber drauf gekommen, indem ich rueckgeld*-1 eingegeben habe 😃

    naja für alternative lösungsvorschläge bin ich immer offen, wenn jemand was besseres hat, zB wie ich eine Variable gleich als "Betrag" definieren kann



  • Mein alternativer Vorschlag: sorgfältige Lektüre von http://www.c-plusplus.net/forum/200753


  • Mod

    wisnia schrieb:

    naja für alternative lösungsvorschläge bin ich immer offen, wenn jemand was besseres hat, zB wie ich eine Variable gleich als "Betrag" definieren kann

    template <typename BaseType> class AbsoluteValue
    {
    private:
      BaseType value;
      void check() { if (value < 0) value = -value; }
    public:
      AbsoluteValue(const BaseType &value): value(value) { check(); }
      operator BaseType() const { return value; }
    };
    
    #include <iostream>
    using namespace std;
    
    int main() 
    {
      AbsoluteValue<double> foo = -1.234;
      std::cout << foo << '\n';
      foo = 3.45;
      std::cout << foo << '\n';
    }
    

    😃

    P.S.: Nein, das ist höchstwahrscheinlich nicht das was du suchst. Oder genauer gesagt: Es ist exakt das ,was du suchst, aber du solltest gar nicht nach so etwas suchen. Ein Datentyp, der sein eigener Betrag ist, klingt nicht nach einem sinnvollen Objekt.



  • SeppJ schrieb:

    Template-Krams
    

    Du wärst nun wirklich der Letzte, dem ich zugetraut hätte, nem Anfänger ein Template um die Ohren zu hauen 😉


  • Mod

    daddy_felix schrieb:

    SeppJ schrieb:

    Template-Krams
    

    Du wärst nun wirklich der Letzte, dem ich zugetraut hätte, nem Anfänger ein Template um die Ohren zu hauen 😉

    Das ist keine Templatemagie, sondern ein simples Template im allerursprünglichsten Sinne der Idee. Damit muss ein Anfänger zurecht kommen, sonst könnte er keinen vector und kein array benutzen und könnte somit überhaupt kein nützliches Programm schreiben. Daher kenne ich hier keine Zurückhaltung. Das einzige was hier für einen Anfänger neu sein dürfte, ist der Konvertierungsoperator in Zeile 8, aber den kann ich nicht kürzen, weil er der Kern der ganzen Idee (und somit die Antwort auf die Frage) ist.



  • ...


Anmelden zum Antworten