2017-07-24 53 views
-1

我試着去編譯這個和它說 (43):警告C4101:「工作」:未引用的局部變量陣列結構 - 未引用的局部變量的

我試圖工結構的陣列 寫4個功能 1.一個輸入工人結構數組 2.一個計算每個工人 結構在陣列中獲得的收益 3.一個輸出工人結構數組 4.一個用於統計已經工作的工人數量隨着時間的推移。返回答案通過函數調用

我不能刪除INT主)工作(否則它不會編譯的一切,這是我到目前爲止有:

#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

'工人工作;'你不使用'work' anywhere.Then你爲什麼不刪除此。 –

+1

你使用什麼編譯器?我同意高拉夫,只是刪除工人的工作,並修正收入方法中不匹配的括號。 –

+2

附註:使用'std :: vector'而不是原始數組 – UnholySheep

回答

2

警告unreferenced local variable手段,您定義變量和從不使用它。而且,由於這只是警告,所以不會妨礙編譯或代碼。您可以簡單地刪除行Worker work;

順便說一句,你有編譯錯誤,在這條線:

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

也許是壞的格式,當你發佈你的問題?可能這行應該是:

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

+0

我認爲這就是你的意思e [i] .earned =(40 * e [i] .hourlyRate)+((e [i])。小時工作 - 40)* ((e [i] .hourlyRate/2)+ e [i] .hourlyRate)); –

+0

@RobKreger謝謝,你的數學看起來更符合邏輯。 – ikleschenkov