这里需要设计一个捐款人类Donator及一个相关函数getMaxName( ),Donator类中包含捐款人的姓名及其捐款额,其部分代码如下:
class Donator{
private:
string name; //捐款人姓名
float money; //捐款金额,单位:元
public:
void setName(string _name);
void setMoney(float _money);
string getName(){return name;}
float getMoney(){return money;}
请根据题意将代码补充完整,以输出一批捐款人来到前后的捐款总金额,以及本批次捐款人中捐款最高者的姓名,题目保证捐款人数不少于1人。
1 #include <iostream> 2 using namespace std; 3 4 class Donator{ 5 private: 6 string name; 7 float money; //单位:元 8 public: 9 void setName(string _name); 10 void setMoney(float _money); 11 string getName(){return name;} 12 float getMoney(){return money;} 13 14 static float totalMoney; 15 static void printTotal() 16 { 17 cout<<"total"<<":"<<Donator::totalMoney<<endl; 18 } 19 }; 20 float Donator::totalMoney=0.0; 21 void Donator::setName(string _name) 22 { 23 24 name=_name; 25 } 26 void Donator::setMoney(float _money){ 27 28 29 totalMoney+=_money; 30 money= _money; 31 } 32 string getMaxName(Donator d[],int n) 33 { 34 float maxmoney=0; 35 int a=n; 36 string maxname; 37 for(int i=0;i<a;i++) 38 { 39 if (d[i].getMoney()>maxmoney) 40 { 41 maxmoney=d[i].getMoney(); 42 maxname=d[i].getName(); 43 } 44 45 } 46 47 return maxname; 48 } 49 50 //读取n个捐款人的姓名和捐款额 51 void read(Donator dt[],int n){ 52 string name; 53 float money; 54 for(int i=0;i<n;i++){ 55 cin>>name>>money; 56 dt[i].setName(name); 57 dt[i].setMoney(money); 58 } 59 } 60 61 int main(){ 62 int n; 63 cin>>n; ////输入本批次将参与的捐款人数 64 cin>>Donator::totalMoney; //输入目前已有的捐款总额 65 Donator::printTotal(); 66 Donator d[n]; 67 read(d,n); 68 Donator::printTotal(); 69 cout<<getMaxName(d,n)<<endl;//输出本批次中捐款最高者姓名 70 return 0; 71 }
标签:name,money,float,捐款,Donator,4.24,string From: https://www.cnblogs.com/liubingyu/p/17351344.html