2017-07-24 3 views
-1

Im Versuch, dies zu kompilieren, und es sagt (43): Warnung C4101: 'Arbeit': unreferenced lokale VariableArray von structures- unreferenced lokale Variable

Ich versuche Array von Worker Strukturen schreiben 4 Funktionen 1. eins, um ein Array von Worker-Strukturen einzugeben 2. eins, um die verdiente für jede Worker Struktur im Array 3. eins, um das Array der Worker-Strukturen 4. eins zu zählen die Anzahl der Arbeiter, die gearbeitet haben im Laufe der Zeit. Bringen Sie die Antwort durch den Funktionsaufruf

Ich kippe Arbeit in int main löschen() oder sonst wird es nicht überhaupt kompilieren, das ist, was ich bisher:

#include <iostream> 
using namespace std; 


struct Worker 
{ 
int idNumber; 
int hoursWorked; 
double hourlyRate; 
double earned; 
}; 



// function prototypes 
void input(Worker [], const int); 
void earnings(Worker [], const int); 
void output(Worker [], const int); 
int over(Worker [], const int); 


int main() { 



int overtime; 



//const int numWorkers = number; 
//work[]; 
//work[numWorkers]; 




Worker work; 
int numWorkers; 

cout << "How many workers are there?"; 
cin >> numWorkers; 

Worker * workers = new Worker[numWorkers]; 


input(workers, numWorkers); 
earnings(workers, numWorkers); 
output(workers, numWorkers); 
overtime = over(workers, numWorkers); 

cout << "The number of workers who worked overtime is " << overtime << endl; 

delete[] workers; 

return 0; 
} 
void input(Worker f[], const int numPeople) { 

for (int i = 0; i < numPeople; i++) { 

    cout << "Worker # " << i << endl; 
    cout << "Enter the id number: "; 
    cin >> f[i].idNumber; 
    cout << "Enter the hourly rate: "; 
    cin >> f[i].hourlyRate; 
    cout << "Enter the hours worked: "; 
    cin >> f[i].hoursWorked; 
} 
} 

void earnings(Worker e[], const int numPeople) { 

for (int i = 0; i < numPeople; i++) { 

    if (e[i].hoursWorked <= 40) { 

     e[i].earned = e[i].hourlyRate * e[i].hoursWorked; 

    } 
    else { 
     e[i].earned = (40 * e[i].hourlyRate) + ((e[i].hoursWorked - 40 
((e[i].hourlyRate/2) + e[i].hourlyRate)); 
    } 
} 

} 

void output(Worker end[], const int numPeople) { 

for (int i = 0; i < numPeople; i++) { 

    cout << "-------------------------" << endl; 
    cout << "Worker # " << i << endl; 
    cout << "Id number: " << end[i].idNumber << endl; 
    cout << "Hours worked: " << end[i].hoursWorked << endl; 
    cout << "Hourly rate: " << end[i].hourlyRate << endl; 
    cout << "Earned: " << end[i].earned << endl; 

} 

} 

int over(Worker o[], const int numPeople) { 
int overWorked = 0; 

for (int i = 0; i < numPeople; i++) { 
    if (o[i].hoursWorked > 40) { 
     overWorked += 1; 
    } 
} 

return overWorked; 
} 
+1

'Arbeiter Arbeit,' Sie sind nicht mit 'Werk' anywhere.Then warum nicht Sie diese entfernen. –

+1

Welchen Compiler benutzen Sie? Ich stimme Gaurav zu, lösche einfach Worker-Arbeit und behebe die nicht passenden Klammern in der Verdienstmethode. –

+2

Nebenbei bemerkt: Verwenden Sie 'std :: vector' anstelle von rohen Arrays – UnholySheep

Antwort

2

unreferenced local variable Mittel Warnung, dass Sie definiert variabel und niemals benutzen. Und da dies nur eine Warnung ist, verhindert es nicht die Kompilierung oder Ihren Code. Sie können einfach die Zeile Worker work; entfernen.

BTW, haben Sie Übersetzungsfehler in dieser Zeile:

e[i].earned = (40 * e[i].hourlyRate) + ((e[i].hoursWorked - 40 ((e[i].hourlyRate/2) + e[i].hourlyRate));

vielleicht die schlechte Formatierung, wenn Sie Ihre Frage posten? Möglicherweise sollte diese Zeile wie folgt aussehen:

e[i].earned = (40 * e[i].hourlyRate) + ((e[i].hoursWorked - 40) * ((e[i].hourlyRate/2) + e[i].hourlyRate));

+0

Ich denke, das ist, was du meintest e [i] .earned = (40 * e [i] .hourlyRate) + ((e [i]. hoursWorked - 40) * ((e [i] .hourlyRate/2) + e [i] .hourlyRate)); –

+0

@RobKreger Danke, deine Mathematik sieht logischer aus. – ikleschenkov