#include <iostream>
#include <algorithm> //利用STL算法
#include <vector>
#include <iomanip> //控制输出格式
using namespace std;
class Employee {
private:
string name;
double salary;
// 构造函数
public:
Employee (string name,double salary){
this->name = name;
this->salary = salary;
}
string getName(){
return name;
}
double getSalary(){
return salary;
}
};
//大于运算符重载
bool compare(Employee &e1,Employee &e2){
return e1.getSalary() > e2.getSalary();
}
double Show(Employee e){
double tax, ic = e.getSalary() - 3500;
if (ic <= 1500)
tax = ic*0.03;
else if (ic <= 4500)
tax = ic*0.1 - 105;
else if (ic <= 9000)
tax = ic*0.2 - 555;
else if (ic <= 35000)
tax = ic*0.25 - 1005;
else if (ic <= 55000)
tax = ic*0.3 -2755;
else if (ic <= 80000)
tax = ic*0.35 - 5505;
else tax = ic*0.45 - 13505;
return tax;
}
int main() {
// 新建三个 Employee 对象,姓名分别是张三,李四和王五,他们的月工资分别为 6500,8000,100000。
Employee e1("张三",6500);
Employee e2("李四",8000);
Employee e3("王五",100000);
//设置容器v,存储三个对象
vector<Employee> v;
v.push_back(e1);
v.push_back(e2);
v.push_back(e3);
//工资存入vs容器
// vector<double> vs;
// vs.push_back(e1.getSalary());
// vs.push_back(e2.getSalary());
// vs.push_back(e3.getSalary());
// //sort函数从小到大排序
// sort (vs.begin(),vs.end());
// //reverse倒序
// reverse (vs.begin(),vs.end());
sort (v.begin(),v.end(),compare); //改为从大到小排列
for (auto i:v){
cout << fixed << setprecision(1);
cout << i.getName() << "应该缴纳的个人所得税是:" << Show(i) << endl;
}
return 0;
}