Problem mit Variablen in einem einfachen Programm.



  • Das ist halt das Gute. Wenn TE sich hier alles durchliest, jeder Anmerkung bis ins Detail nachgeht und sie umsetzt, dann kann er sein Programm auch als eine professionelle, international erwerbbare Software vermarkten. 😉


  • Mod

    Nur mal so zur Anmerkung: Es ist ja auch nicht so, dass man das alles selber erfinden müsste, wenn man eine professionelle, international erwerbbare Software schreiben wollte. Geldklassen gibt es wie Sand am Meer, teils sogar von Juristen geprüft. Zum Beispiel gibt es da was von Intel für lau.



  • Sone schrieb:

    hustbaer schrieb:

    Sone schrieb:

    Man sollte auf cent-Basis rechnen (nicht einlesen umbedingt). Macht bei Programmierergehaelten sowieso mehr sinn 😃

    Mit Scaling-Factor 100 zu rechnen ist wohl eine ziemlich dumme Idee.

    Seid ihr eigentlich alle doof oder so? Sorry, aber das ist verdammt nochmal ein Anfaengerprogramm. Wenn wir eine professionelle International-Erwerbbare Software entwickeln moechten, sagt das doch...

    Und in einem Anfaengerprogramm muss man absichtlich doof sein?
    Zwei Nullen mehr hinschreiben und int64_t statt int/size_t/anderer-noch-blödsinnigerer-Typ ist jetzt viel Aufwand oder was?

    Kurz: bist du wieder mal bekifft? Oder bist du grundsätzlich immer so weit von jeglicher Peilung entfernt?


  • Mod

    Irgendein Integertyp dürfte für den OP völlig ausreichen. Und wenn er dann noch mitnimmt, das float&co. immer die falsche Abstraktion für Geld ist, bin ich zufrieden.

    Ein Progamm wie

    #include <iostream>
    using namespace std;
    
    const int MwstSatz = 19; // in Prozent
    
    int main()
    {
        double tmp = 0;
        cout << "Geben sie einen Nettopreis ein (Euro): ";
        cin >> tmp;                                      // nicht so toll, weil auch sinnlose Einnahmen wie 1.3453e-1 möglich sind, eine bessere Eingabe erfordert aber etwas mehr Aufwand
        int Netto = tmp * 100 + .5;                      // in Cent
        int Steuer = ( Netto * MwstSatz + 50 ) / 100;    // dito, Runden nicht vergessen
        int Brutto = Netto + Steuer;
        cout << "Der Bruttopreis beträgt " << ( Brutto / 100 ) << " Euro und " << ( Brutto % 100 ) << " Cent.\n";
    }
    

    wäre völlig in Ordnung.



  • camper schrieb:

    Irgendein Integertyp dürfte für den OP völlig ausreichen. (...)

    Natürlich hast du Recht.

    Micht hat nur die absolute Aussage von Hacker genervt - "man sollte auf cent-Basis rechnen" - das ist halt völliger Quatsch.
    Man kann in Cent rechnen, und es ist viel besser als mit floats zu rechnen. Man sollte aber mit dem rechnen was man braucht, und das wird (in realen Anwendungen) kaum jemals Cent sein.

    Er könnte ja auch sagen "du könntest mit Cent rechnen". Aber Hacker ist halt Hacker, weniger als Superlativ geht anscheinend nicht.



  • @ benimus:

    Man muss die Variablen nicht am Anfang deklarieren, also ihren Typ aufschreiben. Es wird leichter zu lesen und ist erlaubt dies erst zu tun, wenn du sie auch benutzt:

    #include <iostream> 
    using namespace std; 
    
    const int MwstSatz = 19; 
    
    int main() 
    { 
        cout << "Geben sie einen (positiven) Nettobetrag in Cent ein: " << endl;
        unsigned int Netto; 
        cin >> Netto; 
        unsigned int Steuer = MwstSatz * Netto / 100; 
        unsigned int Brutto = Netto + Steuer; 
        cout << "Der Bruttopreis betraegt (bei " << MwstSatz << "% Mwst): " << Brutto << endl; 
        cin >> Brutto; 
    }
    


  • Wurstinator schrieb:

    deklarieren, also ihren Typ aufschreiben

    Wo bleibst du Wutz? Seine Behauptung ist falsch



  • Sone schrieb:

    Seid ihr eigentlich alle doof oder so? Sorry, aber das ist verdammt nochmal ein Anfaengerprogramm.

    Sagt der richtige. Wie oft hast du hier absoluten Anfängern, die noch nicht mal ein Hello World hinkriegen, irgendwelchen dicken Template-Kram hingeklatscht (wahrscheinlich nur um anzugeben, wie viel du doch schon kannst), mit dem die offensichtlich überhaupt nichts anfangen können? An die eigenen Nase fassen und so. :p



  • camper schrieb:

    size_t wird in <cstio>, <cstdlib>, <cstring> und <ctime>

    In <cstddef> nicht? Dann stimmt mein doofes 14882-2011 pdf irgendwie nicht mehr.


  • Mod

    Tachyon schrieb:

    camper schrieb:

    size_t wird in <cstio>, <cstdlib>, <cstring> und <ctime>

    In <cstddef> nicht? Dann stimmt mein doofes 14882-2011 pdf irgendwie nicht mehr.

    Dort auch.
    Den benutz ich ja sogar selber für sowas, da es der mit Abstand kürzeste ist.



  • naja... ich störe euch nur ungern, aber ich hab da ne frage am rande... warum sagt mir der compiler, dass mein objekt veraltet ist?



  • benimus schrieb:

    naja... ich störe euch nur ungern, aber ich hab da ne frage am rande... warum sagt mir der compiler, dass mein objekt veraltet ist?

    Zeig mal die unübersetzte Fehlermeldung/Warnung. (Also dass was der Compiler dir sagt, ohne Veränderung.)

    Und den Code, falls du was verändert hast.



  • Die Meldung wird nach einem erfolgreichem build nicht ausgegeben und erscheint auch nur, wenn ich etwas am letzten erfolgreichem Quellcode verändert hab'



  • Setz den Haken.



  • Welchen Compiler (und falls vorhanden) IDE verwendest du?
    Und was hast du verändert?



  • nur eine Eingabeüberprüfung mit einer if- else Schleife



  • Ich vermute (denn du hast die Meldung ja immer noch nicht gepostet):

    - Du nutzt Visual Studio.
    - Die Meldung besagt, dass dein Build nicht erfolgreich war und du wirst gefragt, ob der letzte, erfolgreiche Build verwendet werden soll.

    Richtig? Falls ja: da gibt's eine Checkbox von wegen nicht mehr fragen. Du sagst einfach, dass der letzte Build nicht verwendet werden soll und setzt den Haken.



  • also, sorry
    es ist nichts, was mich am build hindert, nur die meldung
    "Dieses Projekt ist veraltet:
    Projekt1 - Debug Win32

    Erstellen?

    Ja Nein abbrechen

    "Haken-setz-feld"Dieses Dialogfeld Nicht mehr anzeigen



  • Das heißt, dass du Ausführen gedrückt hast. Er will jetzt wissen, ob du es vorher auch noch mal erstellen lassen willst. Willst du natürlich. Daher: setz den Haken und drücke Ja.



  • danke


Anmelden zum Antworten