绿源的所有型号和图片:菜鸟问题:C++中断模拟程序,懂的兄弟来帮忙啊

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 03:28:44
题目是这样的:假设有A、B、C、D四个进程,优先级排列是A<B<C<D,当程序开始运行后默认执行A进程,当有高优先级的进程激活后,暂停正在工作的进程,转去执行高优先级的进程,高优先级的进程结束后转回继续刚才的进程。
例如,程序开始,执行A->激活D->中断A执行D->激活B->激活C->D完成执行C->C完成执行B->B完成继续执行A

小弟目前的代码是这样的:

#include <iostream.h>
int pa=1,pb=0,pc=0,pd=0;//定义A、B、C、D的控制部分
int a,b,c,d;
void se_A()//定义进程A
{
for(a=0;a<1000;)
{
a+=1;
cout<<"a="<<a<<endl;
}
if(a==1000) cout<<"se_A complete"<<endl;
}
void se_B()//定义进程B
{
for(b=0;b<1000;)
{
b+=2;
cout<<"b="<<b<<endl;
}
if(b==1000)
{
cout<<"se_B complete"<<endl;
}
}
void se_C()//定义进程C
{
for(c=0;c<1000;)
{
c+=4;
cout<<"c="<<c<<endl;
}
if(c==1000)
{
cout<<"se_C complete"<<endl;
}
}
void se_D()//定义进程D
{
for(d=0;d<1000;)
{
d+=8;
cout<<"d="<<d<<endl;
}
if(d==1000)
{
cout<<"se_D complete"<<endl;
}
}
void main()
{
do
{
if(pd) { se_D();goto loop;}
if(pc) { se_C();goto loop;}
if(pb) { se_B();goto loop;}
if(pa) { se_A();goto loop;}
}while(1);
loop:cout<<"end"<<endl;
}

存在两个问题
1, 怎样在A进程开始后,通过键盘来改变pd,pc,pb的值,比如说:程序开始后,我按一下D键就使pd=1,使D进程处于激发状态?
2, for语句的执行速度过快,通过什么语句可以使它的执行速度慢下来,这样才可以让人有充分的时间去按B、C、D键啊?
劳烦大哥帮忙指点一下,特别是第一个问题,也是这个中断模拟程序的重要部分,因为没有完成该部分,所以程序的后面可能是错的,希望大哥可以帮忙纠正一下,在这里先谢过了。
#include <iostream.h>
#include <windows.h>
int pa=1,pb=0,pc=0,pd=0;//定义A、B、C、D的控制部分
int a,b,c,d;
void se_A()//定义进程A
{
for(a=0;a<200;)
{
a+=1;
cout<<"a="<<a<<endl;
Sleep(100);
}
if(a==200) cout<<"se_A complete!"<<endl;
}
void se_B()//定义进程B
{
for(b=0;b<200;)
{
b+=2;
cout<<"b="<<b<<endl;
Sleep(100);

}
if(b==200) cout<<"se_B complete!"<<endl;
}
void se_C()//定义进程C
{
for(c=0;c<200;)
{
c+=4;
cout<<"c="<<c<<endl;
Sleep(100);
}
if(c==200) cout<<"se_C complete!"<<endl;
}
void se_D()//定义进程D
{
for(d=0;d<200;)
{
d+=5;
cout<<"d="<<d<<endl;
Sleep(100);
}
if(d==200) cout<<"se_D complete!"<<endl;
}
void main()
{
if(pd) se_D();
if(pc) se_C();
if(pb) se_B();
if(pa) se_A();
}
加入了时间控制,修改了MAIN的部分,可是关键的第一问还是不会。

留个记号。。。下班后再看