Brauche Hilfe - Prämienberechnung C++



  • Hallo, wir haben von unserem Lehrer folgendene Aufgabe für C++ erhalten:

    Prämienberechnung

    Eine Firma gewährt ihren Angestellten unter folgenden Bedingungen zu Weihnachten eine Prämie:
    Beträgt das Dienstalter (=Anzahl der Dienstjahre) weniger als ein Jahr, wird keine Prämie gegeben,
    beträgt es mindestens ein Jahr aber weniger als 6 Jahre, besteht die Prämie aus 200 Euro.
    Ist der Mitarbeiter 6 oder mehr Jahre bei der Firma, bekommt er 80 Euro und dazu für jedes Dienstjahr 20 Euro.
    Ist er im letzteren Fall außerdem älter als 50 Jahre, so erhält er noch eine Zulage von 50 Euro.

    Man schreibe ein Programm, das zur Eingabe von Alter und Dienstalter die Höhe der Prämie nennt.

    Annahme dabei:
    Alter und Dienstalter werden in angefangenen Jahren eingegeben.

    Leider habe ich das Programm wohl nicht ganz richtig geschrieben, ich finde aber die Fehler nicht. Wer kann mir da weiterhelfen? Das Programm sieht so aus:

    #include <conio>
    #include <iostream>
    #include <iomanip>

    using namespace std;

    void main()
    {
    int dienstalter, praemie;

    cout<< "Geben Sie das Dienstalter ein:";
    cin>> dienstalter;

    if(dienstalter<1)
    {
    cout <<"Keine Prämie";
    }
    else
    {
    if(dienstalter<6)
    {
    praemie = 200;
    cout << "Die Praemie betraegt:";
    getch();
    }
    else
    {
    if(dienstalter>6)
    {
    praemie = (dienstalter20) + 80;
    cout << "Die Praemie betraegt:";
    }
    else
    {
    if(dienstalter>50)
    {
    praemie = (dienstalter
    20) + 130;
    cout << "Die Praemie betraegt";
    getch();
    }
    }}}}



  • Stroganoff schrieb:

    Leider habe ich das Programm wohl nicht ganz richtig geschrieben, ich finde aber die Fehler nicht.

    was macht dein programm denn? lässt es sich nicht compilieren? stürzt es ab? kommen falsche ergebnisse raus?



  • Nachdem ich F9 drücke startet das Programm. Dann steht dort, dass ic hdas Dienstalter eingeben soll, das mache ich auch, aber dann stürzt das Programm auch sofort wieder ab 😞



  • Probier mal das hier:

    #include <iostream>
    #include <iomanip>
    #include <cstdlib>
    
    using namespace std;
    
    int main()
    {
    int dienstalter, praemie;
    
    cout<< "Geben Sie das Dienstalter ein:";
    cin>> dienstalter;
    
    if(dienstalter<1){
       cout <<"Keine Prämie" << endl;
       }
    else{
       if(dienstalter<6){
         praemie = 200;
         cout << "Die Praemie betraegt:" << praemie << endl;
         }
       else{
         if(dienstalter>6){
            praemie = (dienstalter*20) + 80;
            cout << "Die Praemie betraegt:" << praemie << endl;
            }
         else{
            if(dienstalter>50){
               praemie = (dienstalter*20) + 130;
               cout << "Die Praemie betraegt" << praemie << endl;
               }
         }
       }
    }
    system("pause"); 
    return 0;
    }
    

    Ich hab natürlich noch nicht geprüft ob die Ergebnisse stimmen. Ich hab einfach dein Programm durch nen Compiler gejagt und der hat mir 5 Fehler ausgegeben, die ich einfach mal korrigiert habe.
    Der größte Fehler war eigentlich, das du vergessen hast das Ergebnis in die Ausgabe zu schreiben und die Funktion main hat als Rückgabetyp int und nicht void.
    Ach ja und probier beim nächsten mal bitte die Zeilen ein bisschen einzurücken, damit man es besser lesen kann

    MfG



  • Also so wie ich die Aufgabe verstehe müsste der Code wie folgt aussehen!

    #include <iostream>
    using namespace std;
    
    int main()
    {
        cout<<"Geben Sie das Dienstalter ein: ";
        double dienstalter;
        cin>>dienstalter;
        cout<<"\nGeben Sie das Alter ein: ";
        double alter;
        cin>>alter;
        double praemie;
        if (dienstalter<1)
        {
                          cout<<"Keine Prämie!\n";
        }
        if (dienstalter<6)
        {
             cout<<"Die Praemie betraegt: 200 Euro\n";
        }
        if (dienstalter>=6)
        {
                          if (alter>=50)
                          {
                          praemie=(dienstalter*20)+80+50;
                          cout<<"Die Prämie betraegt: "<<praemie<<" Euro\n";
                          }
                          else 
                          {
                               praemie=(dienstalter*20)+80;
                               cout<<"Die Praemie betraegt: "<<praemie<<" Euro\n";
                          }
        }
        system ("Pause");
        return 0;
    }
    

    Den mit den 50 Jahre ist das Alter und nicht das Dienstalter gemeint!
    Wenn der Mitarbeiter schon länger als 6 Jahre dort arbeitet und über 50 ist dann bekommt der pro Dienstjahr 20€ und dann noch 80€ Prämie und zusätzlich wegen seinem Alter 50€!



  • Wie gesagt, ich hab mir nicht angeschaut wie die Ergebnisse berechnet wurden, sondern hab bloß die Compiler-Fehler aus dem Programm korrigiert.



  • deien version nochmal, nur leicht umgebastelt:

    if (dienstalter>=6) 
        { 
                          praemie=(dienstalter*20)+80; 
                          if (alter>=50) 
                          { 
                             pramie+=50;
                          } 
                          cout<<"Die Praemie betraegt: "<<praemie<<" Euro\n"; 
        }
    


  • volkard schrieb:

    deien version nochmal, nur leicht umgebastelt:

    if (dienstalter>=6) 
        { 
                          praemie=(dienstalter*20)+80; 
                          if (alter>=50) 
                          { 
                             pramie+=50;
                          } 
                          cout<<"Die Praemie betraegt: "<<praemie<<" Euro\n"; 
        }
    

    Nagut spart zwar Code aber kommt das gleiche bei raus!



  • Danke für eure Hilfe, habe das Programm noch ein wenig umgeschrieben, weil ihr da einige Sachen drinhabt, die wir im Unterricht noch nicht hatten (system("pause" beispielsweise).

    Das Programm läuft jetzt zumindestens wie geschmiert.


Anmelden zum Antworten