2014-05-03 73 views
-1

我在從empdetails.txt中提取收入最高的員工並最終將其顯示給用戶時遇到問題。我已經完成從用戶獲得的細節,併合並兩個文件,但爲了顯示最高的付費使用功能,我不知道它。如何提取文件中薪酬最高的員工的詳細信息?

這裏是我的代碼至今:

#include<iostream> 
#include<conio.h> 
#include<fstream> 
using namespace std; 

class emp 
{ 
     int num,age; 
     char name[20],dep[5]; 

     public: 
      void getdata() 
      { 
      cout<<"\n\n Name = "; 
      cin>>name; 
      cout<<"\n Emp Num = "; 
      cin>>num; 
      cout<<"\n Department= "; 
      cin>>dep; 
      cout<<"\n Age  = "; 
      cin>>age; 
      } 
      void display1() 
      { 
      cout<<"\n"<<name<<"\t"<<num<<"\t"<<dep<<"\t\t"<<age; 
      } 

}; 

class sal 
{ 
     float gs,ns; 
     public: 
      void getsal() 
      { 
      cout<<"\n Gross sal = "; 
      cin>>gs; 
      cout<<"\n Net sal = "; 
      cin>>ns; 
      } 
      void display2() 
      { 
      cout<<"\t"<<gs<<"\t"<<ns; 
      }   
}; 

void display() 
{ 
    emp e;sal s; 
    ifstream fil1; 

    fil1.open("empdetails.txt",ios::in); 

    cout<<"\n\n Name \t Emp Num \t Dep \t Age \t Gross Sal \t Net Sal \n"; 

    while(!fil1.eof()) 
    { 
    fil1.read((char*)&e,sizeof(e)); 
    e.display1(); 

    fil1.read((char*)&s,sizeof(s)); 
    s.display2(); 
    } 
} 

int main() 
{ 
    int n; 
    emp e1;sal s1; 
    ofstream fil1,fil2,fil3; 

    fil1.open("emp.txt",ios::out); 
    fil2.open("sal.txt",ios::out); 
    fil3.open("empdetails.txt",ios::out); 

    cout<<"\n How many employee details do you want to enter = "; 
    cin>>n; 

    cout<<"\n Enter the deatils one by one \n"; 
    for(int i=0;i<n;i++) 
    { 
     e1.getdata(); 
     fil1.write((char*)&e1,sizeof(e1)); 

     s1.getsal(); 
     fil2.write((char*)&s1,sizeof(s1)); 

     fil3.write((char*)&e1,sizeof(e1)); 
     fil3.write((char*)&s1,sizeof(s1)); 
    } 
    fil1.close(); 
    fil2.close(); 
    fil3.close(); 

    cout<<"\n\n\t\t Merged file contents \n\n\t\t"; 
    display(); 
    getch(); 
    return 0; 
} 

我怎樣才能使一個功能,使用什麼樣的條件?

回答

0

你不需要一個函數,已經有一個:std::max_element。它可以找出你正在處理class empstd::max_element的前兩個參數,它不知道你希望員工按薪水排序,所以這是你必須提供的第三個參數:需要兩名員工,如果第一名員工的收入低於,則返回true(聽起來很奇怪,但是這允許您使用std::min_element的相同功能)

相關問題