输入样例:
第一行为捐款人数及当前的捐款总额,第二行开始每行为一个捐款人的姓名和个人捐款金额。
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;}
/* 你编写的代码将被嵌入这里*/
static void printTotal();
static float totalMoney;
/* 你编写的代码将被嵌入这里*/
};
float Donator::totalMoney=0;
void Donator::setName(string _name){
name = _name;
}
void Donator::setMoney(float _money){
money = _money;
Donator::totalMoney+=money;
}
void Donator::printTotal(){
cout<<"total:"<<Donator::totalMoney<<endl;
}
string getMaxName(Donator a[],int n){
float max=a[0].getMoney();
int pos=0;
for(int i=1;i<n;i++){
if(max<a[i].getMoney()){
max = a[i].getMoney();
pos = i;
}
}
return a[pos].getName();
}
//读取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;
}