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 die if() {} else { if() { if() else } else } else-Orgie? Das geht mit else if. Wozu die Klammern um left und right?

    #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";
    }

Anmelden zum Antworten