C++實踐數(shù)組作數(shù)據(jù)成員的參考
【項目 - 數(shù)組作數(shù)據(jù)成員】下面是設(shè)計好的一個工資類(Salary):
class Salary
{
public:
void set_salarys( );//輸入職工工資(輸入-1標志著工資輸入結(jié)束),工資保存到salary數(shù)組中,實際人數(shù)保存到number中;
void add_salarys(int x); //給每個人漲x元工資
void sort_salarys(); //對工資由大到小排序
void show_salarys( ); //顯示工資信息
private:
double salarys[50]; //多人的工資
int number; //實際人數(shù)
};
(1)實現(xiàn)Salary類中的成員函數(shù),在main函數(shù)定義Salary類的對象,輸入工資,再給每個人漲500元工資,排序后工資數(shù)據(jù),然后輸出結(jié)果。
(2)手工輸入工資?!太讓人不能忍受了。現(xiàn)給出包含了不足500個職工工資的文件salary.txt(下載),增加一個成員函數(shù),用于從文件中讀出數(shù)據(jù),再增加一個成員函數(shù),將排序后結(jié)果保存到一個文件中。編寫main函數(shù),測試你擴充的功能。
(3)用多文件的方式組織最后的程序。
參考解答:
(1)
using namespace std;
class Salary
{
public:
void set_salarys( ); //輸入工資
void add_salarys(int x); //漲工資
void sort_salarys(); //排序工資
void show_salarys( ); //顯示工資
private:
double salarys[50]; //工資
int number; //實際人數(shù)
};
void Salary::set_salarys( )
{
int x,i=0;
cin>>x;
while(x>0)
{
salarys[i]=x; //工資保存到數(shù)組數(shù)據(jù)成員中
++i;
cin>>x;
}
number=i; //number是數(shù)據(jù)成員,記錄下職工人數(shù)
}
void Salary::add_salarys(int x)
{
int i;
for (i=0;i<number;i++)
salarys[i]+=x;
}
void Salary::sort_salarys()
{
int i,j;
double t;
for (i=0;i<number-1;i++)
for(j=0;j<number-i-1;j++)
if (salarys[j]<salarys[j+1])
{
t=salarys[j];
salarys[j]=salarys[j+1];
salarys[j+1]=t;
}
}
void Salary::show_salarys( )
{
int i;
for (i=0;i<number;i++)
cout<<salarys[i]<<" ";
}
int main( )
{
Salary s;
s.set_salarys( );
s.add_salarys(500);
s.sort_salarys();
s.show_salarys( );
return 0;
}
(2)
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
const int N=500;
class Salary
{
public:
void read_data( );
void write_data();
void add_salarys(int x);
void sort_salarys();
void show_salarys( );
private:
double salarys[N]; //工資, 用指針更好
int number; //人數(shù)
};
void Salary::read_data( )
{
int i;
ifstream infile("salary.txt",ios::in); //以輸入的方式打開文件
if(!infile) //測試是否成功打開
{
cerr<<"open error!"<<endl;
exit(1);
}
i=0;
while(infile>>salarys[i])
i++;
number=i;
infile.close();
}
void Salary::write_data( )
{
int i;
ofstream outfile("salary_ordered.txt",ios::out); //以輸入的方式打開文件
if(!outfile) //測試是否成功打開
{
cerr<<"open error!"<<endl;
exit(1);
}
for(i=0; i<number; ++i)
{
outfile<<salarys[i]<<endl;
}
outfile.close();
}
void Salary::add_salarys(int x)
{
int i;
for (i=0; i<number; i++)
salarys[i]+=x;
}
void Salary::sort_salarys()
{
int i,j;
double t;
for (i=0; i<number-1; i++)
for(j=0; j<number-i-1; j++)
if (salarys[j]<salarys[j+1])
{
t=salarys[j];
salarys[j]=salarys[j+1];
salarys[j+1]=t;
}
}
void Salary::show_salarys( )
{
int i;
for (i=0; i<number; i++)
cout<<salarys[i]<<"\t";
}
int main( )
{
Salary s;
s.read_data( );
s.add_salarys(500);
s.sort_salarys();
s.write_data( );
s.show_salarys( );
return 0;
}
(3)(略)
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
- C++多線程編程時的數(shù)據(jù)保護
- C++數(shù)據(jù)結(jié)構(gòu)之實現(xiàn)鄰接表
- C++連接mysql數(shù)據(jù)庫的兩種方法小結(jié)
- C/C++讀寫注冊表中二進制數(shù)據(jù)(代碼示例)
- Eclipse中C++連接mysql數(shù)據(jù)庫
- C++實現(xiàn)數(shù)據(jù)文件存儲與加載
- 解決易語言轉(zhuǎn)換到C++ 自定義數(shù)據(jù)類型
- c++讀取數(shù)據(jù)文件到數(shù)組的實例
- 解決C++ fopen按行讀取文件及所讀取的數(shù)據(jù)問題
- 詳解C++ 共享數(shù)據(jù)保護機制
相關(guān)文章
VsCode安裝和配置c/c++環(huán)境小白教程(圖文)
本文主要介紹了VsCode安裝和配置c/c++環(huán)境小白教程,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
C語言光標旋轉(zhuǎn)與倒計時功能實現(xiàn)示例詳解
這篇文章主要為大家介紹了C語言實現(xiàn)光標旋轉(zhuǎn)與倒計時功能的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪2021-11-11

