解释这段代码void check(){ cout<<"-------------------"<<"正在运行中的进程"<<"-------------------"<<endl; disp(p); cout<<"-------------------"<<"就绪队列中的进程"<<"-------------------"<<endl; PCB*pr=ready; while(pr!=NULL){ disp(pr); pr=pr->link; } }
时间: 2023-07-19 18:21:47 浏览: 105
这段代码定义了一个 check() 函数,用于显示正在运行和就绪队列中的所有进程的基本信息。具体来说,它首先输出一个分割线和一个标题,表示正在运行的进程。然后,它调用 disp() 函数显示当前正在运行的进程的基本信息。接下来,它输出另一个分割线和一个标题,表示就绪队列中的进程。它通过一个 while 循环遍历整个就绪队列,并调用 disp() 函数显示每个进程的基本信息。最后,它结束函数。
相关问题
解释这段代码void running(){ p=ready; ready=ready->link; t++; cout<<endl<<"这是第"<<t<<"个CPU时间片"<<endl; p->state='R'; check(); p->rtime++; if(p->ntime==p->rtime) destroy(); else{ p->super-=1; p->state='W'; sort(); } if(p==NULL&&ready==NULL) cout<<"全部完成,共耗时"<<t<<"个CPU时间片"<<endl; } int main(){ input(); while(p!=NULL||ready!=NULL) running(); return 0; }
这段代码实现了一个简单的进程调度器。具体来说,它定义了两个函数 running() 和 main()。
running() 函数用于执行进程调度算法的核心流程。它首先将当前进程指针 p 指向就绪队列中的第一个进程,然后将就绪队列的头指针 ready 指向下一个进程,表示当前进程已经被调度执行。接着,它使用一个计数器 t 记录已经运行的 CPU 时间片数,并输出一个提示消息。然后,它将当前进程的状态设置为运行状态,调用 check() 函数显示当前正在运行和就绪队列中的所有进程的基本信息,并将已经运行的时间 rtime 加 1。接下来,它判断当前进程的运行时间是否已经达到总运行时间 ntime。如果是,就调用 destroy() 函数销毁当前进程,否则,它将当前进程的优先级降低一个单位,将状态设置为等待状态,调用 sort() 函数重新对就绪队列进行排序。最后,它判断就绪队列是否为空,如果是,就输出一个提示消息,表示所有进程已经运行完成了。
main() 函数是程序的主函数,用于初始化输入进程信息,并循环调用 running() 函数执行进程调度算法,直到所有进程都已经执行完成。最后,它返回 0 表示程序正常退出。
帮我修改一下这个c++代码的错误。#include <iostream> #include <string> using namespace std; class person { protected: string name; char sex; int age; public: person(string n, char s, int a): name(n), sex(s), age(a) {} virtual void show() { cout<<"姓名:"<<name<<endl; cout<<"性别:"<<sex<<endl; cout<<"年龄:"<<age<<endl; } }; class teacher: public person { private: string title; public: teacher(string n, char s, int a, string t): person(n, s, a), title(t) {} void show() { person::show(); cout<<"职称:"<<title<<endl; } void check() { if(title=="教授" && age<=30) cout<<name<<"教授的年龄不符合要求!"<<endl; else if(title=="副教授" && age<=26) cout<<name<<"副教授的年龄不符合要求!"<<endl; else if(title=="讲师" && age<=23) cout<<name<<"讲师的年龄不符合要求!"<<endl; else if(title=="助教" && age<=20) cout<<name<<"助教的年龄不符合要求!"<<endl; else cout<<name<<"的年龄符合要求。"<<endl; } }; int main() { teacher t("李琴", "男", 32, "教授"); t.show(); t.check(); return 0; }
这段代码有两个问题:
1. 在创建 teacher 对象时,第二个参数应该是一个字符型,而不是字符串。所以需要将 "男" 改为 '男'。
2. 在 check 函数中,对于年龄限制的条件判断中,应该使用 >= 而不是 <=。因为年龄越小,限制越多,所以应该是 >= 而不是 <=。
修改后的代码如下:
```
#include <iostream>
#include <string>
using namespace std;
class person {
protected:
string name;
char sex;
int age;
public:
person(string n, char s, int a): name(n), sex(s), age(a) {}
virtual void show() {
cout<<"姓名:"<<name<<endl;
cout<<"性别:"<<sex<<endl;
cout<<"年龄:"<<age<<endl;
}
};
class teacher: public person {
private:
string title;
public:
teacher(string n, char s, int a, string t): person(n, s, a), title(t) {}
void show() {
person::show();
cout<<"职称:"<<title<<endl;
}
void check() {
if(title=="教授" && age>=30)
cout<<name<<"教授的年龄不符合要求!"<<endl;
else if(title=="副教授" && age>=26)
cout<<name<<"副教授的年龄不符合要求!"<<endl;
else if(title=="讲师" && age>=23)
cout<<name<<"讲师的年龄不符合要求!"<<endl;
else if(title=="助教" && age>=20)
cout<<name<<"助教的年龄不符合要求!"<<endl;
else
cout<<name<<"的年龄符合要求。"<<endl;
}
};
int main() {
teacher t("李琴", '男', 32, "教授");
t.show();
t.check();
return 0;
}
```
阅读全文