Problem mit Variablen in einem einfachen Programm.
-
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.
-
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 Win32Erstellen?
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
-
_matze schrieb:
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)
NIE! Das war immer nur PI!!

-

-
_matze schrieb:

Das war ich wirklich nich
:schnief: