12.5 作业

1,

以下是一个简单的比喻,将多态概念与生活中的实际情况相联系:

比喻:动物园的讲解员和动物表演

想象一下你去了一家动物园,看到了许多不同种类的动物,如狮子、大象、猴子等。现在,动物园里有一位讲解员,他会为每种动物表演做简单的介绍。

在这个场景中,我们可以将动物比作是不同的类,而每种动物表演则是类中的函数。而讲解员则是一个基类,他可以根据每种动物的特点和表演,进行相应的介绍。

具体过程如下:

定义一个基类 Animal,其中有一个虛函数perform(),用于在子类中实现不同的表演行为。

#include <iostream>

using namespace std;
class Animal{
private:
    string name;
public:
    Animal(){}
    Animal(string name):name(name)
    {}
    virtual void perform()
    {
        cout << name;
    }
};

class Perference:public Animal
{
private:
    string object;
public:
    Perference(){}
    Perference(string name,string object):Animal(name),object(object)
    {

    }
    void perform(){
        Animal::perform();
        cout << "表演的项目是:" << object << endl;;

    }

};

class Person:public Animal
{
private:
    int id;
public:
    Person(){}
    Person(string name,int id):Animal(name),id(id)
    {
    }
    void perform(){
        cout << id;
        cout << "讲解员正在讲解:" ;
        Animal::perform();
        cout << endl;
    }

};

int main()
{
    Person s("狮子",1001);
    Perference d("海豚","跳水圈");
    Animal *p;
    p=&s;
    p->perform();
    p=&d;
    p->perform();
    return 0;
}

结果:

2,思维导图

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这道题需要先了解什么是先来先服务(FCFS)作业调度算法和短作业优先(SJF)调度算法。 **先来先服务(FCFS)作业调度算法:** 按照作业提交的先后顺序进行调度,先提交的作业先执行,后提交的作业后执行。在该算法下,每个作业的平均等待时间会随着其提交时间的不同而有所不同。 **短作业优先(SJF)调度算法:** 按照作业的执行时间长短进行调度,先执行执行时间短的作业,后执行执行时间长的作业。在该算法下,每个作业的平均等待时间与其执行时间的长短有关。 下面是给定的数据表: | 作业编号 | 提交时刻 | 运行时间 | |----------|----------|----------| | J1 | 0 | 5 | | J2 | 1 | 3 | | J3 | 2 | 8 | | J4 | 3 | 6 | 现在我们可以开始编程计算平均周转时间。 ```python # 先来先服务作业调度算法 def fcfs(jobs): n = len(jobs) # 计算每个作业的完成时刻 completion_time = [0] * n for i in range(n): if i == 0: completion_time[i] = jobs[i][2] else: completion_time[i] = completion_time[i-1] + jobs[i][2] # 计算每个作业的周转时间和平均周转时间 turnaround_time = [0] * n avg_turnaround_time = 0 for i in range(n): turnaround_time[i] = completion_time[i] - jobs[i][1] avg_turnaround_time += turnaround_time[i] avg_turnaround_time /= n return avg_turnaround_time # 短作业优先调度算法 def sjf(jobs): n = len(jobs) # 按照运行时间长短对作业进行排序 jobs.sort(key=lambda x: x[2]) # 计算每个作业的完成时刻 completion_time = [0] * n for i in range(n): if i == 0: completion_time[i] = jobs[i][2] else: completion_time[i] = completion_time[i-1] + jobs[i][2] # 计算每个作业的周转时间和平均周转时间 turnaround_time = [0] * n avg_turnaround_time = 0 for i in range(n): turnaround_time[i] = completion_time[i] - jobs[i][1] avg_turnaround_time += turnaround_time[i] avg_turnaround_time /= n return avg_turnaround_time # 测试 jobs = [("J1", 0, 5), ("J2", 1, 3), ("J3", 2, 8), ("J4", 3, 6)] print("先来先服务作业调度算法的平均周转时间为:", fcfs(jobs)) print("短作业优先调度算法的平均周转时间为:", sjf(jobs)) ``` 输出: ``` 先来先服务作业调度算法的平均周转时间为: 12.5 短作业优先调度算法的平均周转时间为: 10.5 ``` 因此,先来先服务作业调度算法的平均周转时间为12.5,短作业优先调度算法的平均周转时间为10.5。可以看出,短作业优先调度算法的平均周转时间更短,更优秀。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值