e[2] = new Technician(1003, "Chirs", 1100.0, 15, 60.0); e[3]= new Technician(1004, "Chi", 1100.0, 18, 40.0);这两句话有什么错误,如何改正
时间: 2024-03-02 17:49:39 浏览: 19
这两句话的错误在于 Technician 类中的 display 函数名字拼写错误,应该是 display 而不是 dispaly。因此,在调用这个函数时会出现错误。可以将这个函数名字改正为 display 就可以解决问题了。正确的代码如下:
```
vector<Employee*> e(4);
e[0] = new Salesman(1001, "Dal", 1000.0, 0.04, 10000);
e[1] = new Salesman(1002, "Viv", 1100.0, 0.06, 7000);
e[2] = new Technician(1003, "Chirs", 1100.0, 15, 60.0);
e[3] = new Technician(1004, "Chi", 1100.0, 18, 40.0);
for (int i = 0; i < e.size(); i++) {
e[i]->display();
}
for (int i = 0; i < e.size(); i++) {
delete e[i];
}
```
相关问题
#include<iostream> #include<vector> #include<string> using namespace std; class Employee { public: virtual void display() = 0; virtual double salary() = 0; Employee(int a=0, string b=0) :id(a), name(b) { } ~Employee() { } protected: int id; string name; }; class Salesman:public Employee { public: Salesman(int a1 ,string b1 ,double a = 0,double c=0 ,int b = 0 ) :basesalary(a), amountofsales(b),comissionRate(c),Employee(a1,b1) { } ~Salesman() { } virtual double salary() { return (basesalary + amountofsales * comissionRate); } virtual void display() { cout << id << "-" << name << "-" << basesalary << "-" << amountofsales << "salary=" << salary() << endl; } protected: double basesalary; int amountofsales; double comissionRate; }; class Technician :public Employee { public: Technician(int a1,string b1,double a,int b,double c):basesalary(a),workhours(b),paymenthour(c),Employee(a1,b1) { } ~Technician() { } virtual double salary() { return (basesalary + workhours * paymenthour); } virtual void dispaly() { cout << id << "-" << name << "-" << basesalary << "-" << workhours <<"-" << paymenthour<<"-" << salary() << endl; } protected: double basesalary; int workhours; double paymenthour; }; int main() { vector<Employee*>e(4); e[0] = new Salesman(1001, "Dal", 1000.0, 0.04, 10000); e[1] = new Salesman(1002, "Viv", 1100.0, 0.06, 7000); e[2] = new Technician(1003, "Chirs", 1100.0, 15, 60.0); e[3]= new Technician(1004, "Chi", 1100.0, 18, 40.0); for (int i = 0;i < e.size();i++) { e[i]-> display(); } for (int i = 0;i < e.size();i++) { delete e[i]; } }
这是一个基于多态的简单的员工管理系统的代码。其中有一个抽象基类 Employee,它有两个纯虚函数 display 和 salary,分别用于显示员工信息和计算员工薪水。派生类 Salesman 和 Technician 继承自 Employee 类,并实现了纯虚函数。在 main 函数中,使用了一个指向 Employee 类的指针数组来管理员工,通过向这个数组添加不同的派生类对象实现了多态性。最后在程序结束前,释放了动态分配的内存。
7. 将job字段进行序数编码(management,technician,admin分别用1,2,3,…进行表示)
好的,这是一个特征编码的问题。将job字段进行序数编码可以使用pandas库中的replace()函数来实现。具体的步骤如下:
1. 读取原始数据并将其存储在一个pandas DataFrame中。
2. 创建一个字典,将job字段中的每个值映射到一个整数值(例如,management映射到1,technician映射到2,admin映射到3等等)。
3. 使用replace()函数将job字段中的每个值替换为相应的整数值。
下面是一个示例代码:
```python
import pandas as pd
# 读取原始数据
data = pd.read_csv('data.csv')
# 创建一个字典,将job字段中的每个值映射到一个整数值
job_dict = {'management': 1, 'technician': 2, 'admin.': 3, ...}
# 使用replace()函数进行序数编码
data['job'] = data['job'].replace(job_dict)
```
这将使用字典中的映射将原始数据中的job字段替换为整数值。需要注意的是,这种编码方法可能会引入一些偏差,因为在某些情况下,不同的整数值可能会被误解为具有不同的重要性或权重。