2013-10-25 58 views
2

我是C++的新手。我想,我想,回答這個問題,我浪費了很多小時。我想我已經正確地解決了問題。讀數據文件到數組,傳遞給成員函數 - 丟失

問題:我可以從文件讀取數據(它有列),但我不能從一個文件有兩列讀取它。

所以對象的功能可以存儲它來計算總

//這裏我有什麼...誰能幫我...我知道這可能是簡單的,但我完全糊塗了,我在我繼續之前,必須理解數組和類。

#include <iostream> 
#include <fstream> 
#include <iomanip> 

using namespace std; 

Class Payroll 

{ 
private: 
int hours; 
double rate, gross; 

public: 
Payroll()  // default constructor 
{ 
    hours = rate = 0; 
} 

// Set 

    void setHours(int h) 
{ hours = h; } 

void setRate(double r) 

{ rate = r; } 

// Get 
double getGross (int hours, double rate r]) 

{ 
    gross = hours * rate; 
    return gross; 
} 

}; 
// trying write a function that take array display results 
void showfunction(int array[],int); // lost here too! 

int main() 
{ 

Payroll sevenObjects[7]; 

const int EMP_RATE = 7 ;// sets number of Employees 
const int EMP_HOURS = 7; 
int hours [EMP_HOURS]; 
double rate [EMP_RATE]; 
int count ; 
ifstream datafile; // used to read data 

datafile.open ("payroll.dat");  // Open file 
    if(!datafile) 
     cout << "error opening data file \n"; 
    else 
    {         

    /* i tried nested and getline, probably wrong. i tried 2D Array[][] but didnt  know how to pass to member function */   

     for (count = 0 ; count < lines; count++) 
      { 
      >> hours[count]>>rate[count];  
      cout << hours[count]<<" " <<rate[count]<< endl; 

      } 
     } 
     datafile.close(); 
    return 0; 
    } 

工資

40.0   10.00 
38.5   9.50 
16.0  7.50 
22.5  9.50 
40.0  8.00 
38.0  8.00 
40.0  9.00 
+1

我想通過固定的編譯錯誤開始。 – WhozCraig

+1

除非必要,否則請不要粘貼*整個*賦值說明*,這種情況很少見。 – ChiefTwoPencils

+0

好的,謝謝,我看到我限制了我的自我,我沒有想到我可以從文件中獲取你所做的時尚數據。數據文件>>小時>>費率; 。謝謝我下次不會發布整件事 – user2920627

回答

1

首先,你要改變你的getGross方法:

double getGross() 
{ 
    gross = hours * rate; 
    return gross; 
} 

其實,這將是更好的有CalculateGrossgetGross方法,但它是由您決定。

可能比較容易理解的方式來讀取數據:

for (count = 0 ; count < lines; count++) 
{ 
    int hours; 
    double rate; 

    // read everything in temporary variables; 
    datafile >> hours >> rate;  
    sevenObjects[count].setHours(hours); 
    sevenObjects[count].setRate(rate); 

} 

至於打印功能,可以設計這樣的事情:

void showfunction(Payroll *array, int size) 
{ 
    for (int i = 0; i < size; i++) 
    { 
     cout << "Gross: " << array[i].getGross() << endl; 
    } 
} 
+0

謝謝MiXaeL我想我明白了。 *數組是一個數組指針?但我有2個值,我回傳給一個數組中的成員函數? – user2920627

+0

'* array'與'array []'基本相同,因爲'array'是一個指向其開始的指針。在這種情況下,它是Payrolls數組,因此每個成員都具有Payroll類的所有值和方法。 – MiXaeL

相關問題