2017-04-06 4 views
0

J'ai besoin d'aide pour corriger une erreur avec le code suivant.Sa fonction principale est de recevoir un utilisateur heures travaillées, puis basé sur la logique derrière le nombre d'heures travaillées, appliquer le taux horaire approprié.Besoin d'aide pour obtenir le code VOID de travail avec salaire brut

#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 

Oui, c'est pour une classe. Non, je ne veux pas la réponse.

questions Suspect:

  • Ma syntaxe vide est par erreur organisée
  • Mon while isnt correctement utilisé
  • Mes variables sont illégalement appelés de la fonction vide

Tout et tout L'aide pour me mettre sur la bonne voie est appréciée à 100%.

EDIT:

donc ce code "corriger" me fait un exécutable qui se bloque essentiellement:

getGrossPay void (int régulier, int & timeAndHalf, int & DoubleTime);

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() {// des variables

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 

} // fin de la fonction principale

//****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

[Pourquoi est-ce que quelqu'un peut m'aider? " pas une question réelle?] (https://meta.stackoverflow.com/q/284236/62576) –

+0

'REG_RATE',' DOUB_TIME', 'TIME_HALF' sont seulement déclarés __inside__ la fonction' main() '; ils sont inaccessibles à 'getGrossPay()'. Voir ma réponse ci-dessous pour d'autres fautes dans le code. –

Répondre

0

getGrossPay() est déclarée avec 3 paramètres par définition. Toutefois, à 3 cas dans votre fonction main(), tels que:

getGrossPay(regular); 

ne un paramètre est passé à votre fonction. Vous devez retravailler votre fonction car il y a beaucoup d'erreurs logiques concernant getGrossPay() dans votre code. En outre, vous n'avez pas déclaré regular dans main(), mais vous le transmettez à la fonction getGrossPay().

également, vous avez déclaré DOUB_TIME, REG_RATE et TIME_HALFintérieur votre fonction main(); par conséquent, il est inaccessible dans la fonction getGrossPay().

0

Si GetGrossPay est prototypé en tant que fonction avec trois paramètres, il ne fonctionnera pas sans lui donner trois arguments. Je suggère de modifier votre fonction.