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)手工輸入工資?!太讓人不能忍受了?,F(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)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(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-01C語言光標旋轉(zhuǎn)與倒計時功能實現(xiàn)示例詳解
這篇文章主要為大家介紹了C語言實現(xiàn)光標旋轉(zhuǎn)與倒計時功能的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪2021-11-11