计算捐款总量

编译器:C++ (g++)

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

输入样例:

第一行为捐款人数及当前的捐款总额,第二行开始每行为一个捐款人的姓名和个人捐款金额。

3 28.5

Xiaoyu 12

Mike 81.5

Joey  50

输出样例:

输出本批次捐款人到达前后的捐款总额,及本批次中捐款最高者的姓名。

total:28.5

total:172

Mike
 

#include  <iostream>
using  namespace  std;

class  Donator{
        private:
                string  name;
                float  money;  //单位:元                
        public:
                void  setName(string  _name);
                void  setMoney(float  _money);
                string  getName(){return  name;}
                float  getMoney(){return  money;}
                
/*  你编写的代码将被嵌入这里*/


//读取n个捐款人的姓名和捐款额  
void  read(Donator  dt[],int  n){
        string  name;
        float  money;
        for(int  i=0;i<n;i++){
                cin>>name>>money;
                dt[i].setName(name);
                dt[i].setMoney(money);
        }
}
  
int  main(){
        int  n;
        cin>>n;  输入本批次将参与的捐款人数
        cin>>Donator::totalMoney;  //输入目前已有的捐款总额  
        Donator::printTotal();
        Donator  d[n];
        read(d,n);
        Donator::printTotal();
        cout<<getMaxName(d,n)<<endl;//输出本批次中捐款最高者姓名  
        return  0;          
}  


Ans:

  static float totalMoney;
        static void printTotal()
		{
			cout<<"total"<<":"<<Donator::totalMoney<<endl;
		}
};
 
 
 
float Donator:: totalMoney = 0.0;
void Donator :: setName(string _name)
		{
			name = _name;
		}
void Donator :: setMoney(float _money)
		{
			totalMoney += _money;
    money = _money;
		}
 
string getMaxName(Donator d[], int n)
		{
			float maxmoney = 0;
    int a=n;
			string maxname;
		
			for(int i = 0; i < a; i++)
            {
               
				if(d[i].getMoney() > maxmoney)
				{
					maxmoney = d[i].getMoney();
					maxname = d[i].getName();
					
				}
			}
			return maxname;
		}

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值