Hilfe bei C++ Übung
-
Hallo Programmierer,
ich benötige Hilfe bei meiner Übung.
Die Übung ist eine in Visual Studio programmierte Übung die eine Prämie für Mitarbeiter ausrechnen soll. Also If Else.
Fehler: Wenn man das Programm ausführt und Rechnen möchte werden die Multiplikationszeichen ignoriert (*0.05, 0.10 etc.). Bitte um Hilfe und bedanke mich im Voraus.
#include <iostream> #include <cmath> #include <iomanip> using namespace std; double Vorjahreslohn, Zugehoerigkeit, Praemie; int main() { cout << setw(20) << (left) << "Betriebszugehoerichkeit" << setw(20) << (right) << "Praemienzahlung\n"; cout << setw(20) << (left) << "0 bis unter 2 Jahre" << setw(20) << (right) << "5%\n"; cout << setw(20) << (left) << "2 bis unter 5 Jahre" << setw(20) << (right) << "10%\n"; cout << setw(20) << (left) << "5 bis unter 15 Jahre" << setw(20) << (right) << "15%\n"; cout << setw(20) << (left) << "15 bis mehr Jahre" << setw(20) << (right) << "10%\n"; cout << "\n\n\n"; cout << "Vorjahreseinkommen: "; cin >> Vorjahreslohn; cout << "\n\n\n"; cout << "Wie viele Jahre sind Sie bei der Firma: "; cin >> Zugehoerigkeit; cout << "\n\n\n"; if (Zugehoerigkeit < 2) { Praemie = Vorjahreslohn*0.05; } else { if (2 <= Zugehoerigkeit < 5) { Praemie = Vorjahreslohn * 0.10; } else { if (5 <= Zugehoerigkeit < 15) { Praemie = Vorjahreslohn * 0.15; } else { Praemie = Vorjahreslohn * 0.20; } } } cout << "Ihre Praemie betraegt: " << Praemie; cin.get(); cin.get(); return 0; }
-
Würdest du bitte deinen Beitrag editieren, den Code nochmals einfügen und auf das lustige
</>
neben dem Dropdown mit C++ klicken?
-
@CodeJo sagte in Hilfe bei C++ Übung:
if (2 <= Zugehoerigkeit < 5)
Das funktioniert so in der Mathematik. Beim Programmieren ergibt a <= b einen Boolean. Das Ergebnis wird dann wieder mit < 5 verglichen. Also False/True (umgewandelt in int: 0 bzw. 1) < 5. Und das ist true. Diese Bedingung ist also immer wahr.
Stelle Warnungen an. Dein Compiler sollte dich warnen mit sowas wie
warning: comparison of constant 5 with expression of type 'bool' is always true [-Wtautological-constant-out-of-range-compare]
(oder ähnlich)Woran willst du bei deinem Programm eigentlich erkannt haben, dass Multiplikation ignoriert wird?
-
Nicht die Multiplikation sondern eher, das es immer mit *0.10 rechnet und die anderen nicht beachtet.
-
Habe das Problem selbst gelöst. Dennoch danke für eure Bemühungen.
#include <iostream> #include <cmath> #include <iomanip> using namespace std; double Vorjahreslohn, Zugehoerigkeit, Praemie; int main() { cout << setw(20) << (left) << "Betriebszugehoerichkeitfsdddddd" << setw(20) << (right) << "Praemienzahlung\n"; cout << setw(20) << (left) << "0 bis unter 2 Jahre" << setw(20) << (right) << "5%\n"; cout << setw(20) << (left) << "2 bis unter 5 Jahre" << setw(20) << (right) << "10%\n"; cout << setw(20) << (left) << "5 bis unter 15 Jahre" << setw(20) << (right) << "15%\n"; cout << setw(20) << (left) << "15 bis mehr Jahre" << setw(20) << (right) << "20%\n"; cout << "\n\n\n"; cout << "Vorjahreseinkommen: "; cin >> Vorjahreslohn; cout << "\n\n\n"; cout << "Wie viele Jahre sind Sie bei der Firma: "; cin >> Zugehoerigkeit; cout << "\n\n\n"; if (Zugehoerigkeit <= 2) { Praemie = Vorjahreslohn*0.05; } else { if (Zugehoerigkeit <= 5) { Praemie = Vorjahreslohn * 0.10; } else { if (Zugehoerigkeit <= 10) { Praemie = Vorjahreslohn * 0.15; } else { Praemie = Vorjahreslohn * 0.20; } } } cout << "Ihre Praeie betraegt: " << Praemie; cin.get(); cin.get(); return 0; }
-
@CodeJo sagte in Hilfe bei C++ Übung:
Habe das Problem selbst gelöst.
wob hat doch den Fehler benannt
-
@CodeJo sagte in Hilfe bei C++ Übung:
Habe das Problem selbst gelöst. Dennoch danke für eure Bemühungen.
Was willst du mit
double
bei Geld? Wozu globale variablen? Wozu dieif() {} else { if() { if() else } else } else
-Orgie? Das geht mitelse if
. Wozu die Klammern umleft
undright
?#include <cstdlib> #include <iostream> #include <iomanip> int main() { std::cout << std::setw(20) << std::left << "Betriebszugehoerichkeit" << std::setw(20) << std::right << "Praemienzahlung\n" << std::setw(20) << std::left << "0 bis unter 2 Jahre" << std::setw(20) << std::right << "5%\n" << std::setw(20) << std::left << "2 bis unter 5 Jahre" << std::setw(20) << std::right << "10%\n" << std::setw(20) << std::left << "5 bis unter 15 Jahre" << std::setw(20) << std::right << "15%\n" << std::setw(20) << std::left << "15 bis mehr Jahre" << std::setw(20) << std::right << "20%\n\n\n\nVorjahreseinkommen: "; long unsigned Vorjahreslohn; if (!(std::cin >> Vorjahreslohn)) { std::cerr << "Input error, du Horst!\nBye.\n\n"; return EXIT_FAILURE; } Vorjahreslohn *= 100; std::cout << "\n\n\nWie viele Jahre sind Sie bei der Firma: "; unsigned Zugehoerigkeit; if (!(std::cin >> Zugehoerigkeit) { std::cerr << "Input error, du Horst!\nBye.\n\n"; return EXIT_FAILURE; } long unsigned Praemie = Vorjahreslohn * 20; if (Zugehoerigkeit <= 2) Praemie = Vorjahreslohn * 5; else if (Zugehoerigkeit <= 5) Praemie = Vorjahreslohn * 10; else if (Zugehoerigkeit <= 10) Praemie = Vorjahreslohn * 15; std::cout << "\n\n\nIhre Praemie betraegt: " << Praemie / 100. << "\n\n"; }