2017-04-06 3 views
0

Ich bin in der Hilfe der Hilfe, die Korrektur eines Fehlers mit dem folgenden code.Its primäre Funktion ist es, einen Benutzer Stunden gearbeitet, dann auf der Logik hinter der Anzahl der Stunden gearbeitet, Wenden Sie den entsprechenden Stundensatz an.Brauchen Sie Hilfe bekommen VOID-Code arbeiten mit Bruttogehalt

#include <iostream> 
#include <iomanip> 
using namespace std; 

//function prototype 
void getGrossPay(int regular, 
       int &timeAndHalf, 
       int &doubleTime); 

int main() 
{ //variables 
    const int REG_RATE = 10; 
    const int TIME_HALF = 15; 
    const int DOUB_TIME = 20; 
    int hoursWorked = 0; 

    cout << "Please enter your hours worked(press -1 to quit): "; 
    cin >> hoursWorked; 
    getGrossPay(regular, timeAndHalf, doubleTime); 

    while (hoursWorked != -1); 
    { 
     if(hoursWorked >=1 && hoursWorked <=37) 
     { 
     getGrossPay(regular); 
     cout << "Your gross pay is: $ (press -1 to exit)" << regular << endl; 
     cout << "Please enter your hours worked(press -1 to quit): "; 
     cin >> hoursWorked; 
     } 
     else 
      if (hoursWorked >=38 && hoursWorked <=50) 
     { 
      getGrossPay(timeAndHalf); 
      cout << "your gross pay is: $(press -1 to exit)" << timeAndHalf << endl; 
      cout << "Please enter your hours worked(press -1 to quit): "; 
      cin >> hoursWorked; 
     } 
      else 
      if (hoursWorked >=50) 
      { 
      getGrossPay(doubleTime); 
      cout << "your gross pay is: $(press -1 to exit)" << doubleTime << endl; 
      cout << "Please enter your hours worked(press -1 to quit): "; 
      cin >> hoursWorked; 
      }//end if 
    }//end while 


}// end of main function 


    //****function definitions***** 
    void getGrossPay(int regular, 
       int &timeAndHalf,int &doubleTime) 
    { 
     regular = hoursWorked * REG_RATE; 
     timeAndHalf = hoursWorked * TIME_HALF; 
     doubleTime = hoursWorked * DOUB_TIME; 

    } // end getGrossPay function 

Ja, das ist für eine Klasse. Nein, ich will die Antwort nicht.

Mutmaßliche Fragen:

  • Meine Leere Syntax wird organisiert fälschlicherweise
  • Meine während Aussage richtig genutzt isnt
  • Meine Variablen illegal aus der Leere Funktion

Jedwedes genannt werden Hilfe, um mich auf die richtige Spur zu bringen, wird 100% geschätzt.

EDIT:

Also dieser Code "reparieren" bringt mich auf eine ausführbare Datei, die im Grunde friert:

Leere getGrossPay (int regelmäßige, int & timeAndHalf, int & Doubletimerap);

const int REG_RATE = 10; 
const int TIME_HALF = 15; 
const int DOUB_TIME = 20; 
int hoursWorked = 0; 
int regular = 0; 
int timeAndHalf = 0; 
int doubleTime = 0; 

int main() {// Variablen

cout << "Please enter your hours worked(press -1 to quit): " << endl; 
cin >> hoursWorked; 

while (hoursWorked != -1); 
{ 

    if(hoursWorked >=1 && hoursWorked <=37) 
    { 
    getGrossPay(regular, timeAndHalf, doubleTime); 

    cout << "Your gross pay is: $ (press -1 to exit)" << regular << endl; 
    cout << "Please enter your hours worked(press -1 to quit): " << endl; 

    cin >> hoursWorked; 
    } 
    else 
     if (hoursWorked >=38 && hoursWorked <=50) 
    { 
     getGrossPay(regular, timeAndHalf, doubleTime); 
     cout << "your gross pay is: $(press -1 to exit)" << timeAndHalf << endl; 
     cout << "Please enter your hours worked(press -1 to quit): " << endl; 
     cin >> hoursWorked; 
    } 
     else 
     if (hoursWorked >=50) 
     { 
     getGrossPay(regular, timeAndHalf, doubleTime); 
     cout << "your gross pay is: $(press -1 to exit)" << doubleTime << endl; 
     cout << "Please enter your hours worked(press -1 to quit): " << endl; 
     cin >> hoursWorked; 
     }//end if 
}//end while 

} // Ende der Hauptfunktion

//****function definitions***** 
void getGrossPay(int regular, 
      int &timeAndHalf,int &doubleTime) 
{ 
    regular = hoursWorked * REG_RATE; 
    timeAndHalf = hoursWorked * TIME_HALF; 
    doubleTime = hoursWorked * DOUB_TIME; 

} // end getGrossPay function 
+0

[Warum ist "Kann mir jemand helfen?" keine eigentliche Frage?] (https://meta.stackoverflow.com/q/284236/62576) –

+0

'REG_RATE',' DOUB_TIME', 'TIME_HALF' sind nur deklariert __inside__ die' main() 'Funktion; Sie sind für 'getGrossPay()' nicht zugänglich. Siehe meine Antwort unten für andere Fehler im Code. –

Antwort

0

getGrossPay() wird mit 3 Parametern definitions erklärt. Jedoch bei 3-Instanzen in Ihrer main() Funktion, wie zum Beispiel:

getGrossPay(regular); 

nur ein Parameter an die Funktion übergeben. Sie müssen Ihre Funktion wie viele Logikfehler bezüglich getGrossPay() in Ihrem Code neu arbeiten.

Zusätzlich haben Sie regular in main() nicht deklariert, aber Sie übergeben es an die getGrossPay() Funktion.

Auch haben Sie DOUB_TIME erklärt, REG_RATE und TIME_HALFinnerhalb Ihre main() Funktion; daher ist es in der getGrossPay() Funktion nicht zugänglich.

0

Wenn GetGrossPay als eine Funktion mit drei Parametern erstellt wird, wird es nicht funktionieren, ohne es drei Argumente zu geben. Ich schlage vor, deine Funktion zu modifizieren.