4.24

发布时间 2023-04-24 23:46:42作者: 刘冰宇

这里需要设计一个捐款人类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 }