找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 996|回复: 0

[改写]将一下C语言改写成C++,会的请举手……

[复制链接]
发表于 2009-11-6 01:18:35 | 显示全部楼层 |阅读模式 IP:江苏扬州
各位有能力的同仁帮帮忙……
#include<stdio.h>
#define TRUE 1
#define FALSE 0
#define MAXPRI 100
#define NIL -1
struct
{
int id;
char status;
int nextwr;
int priority;
}
pcb [3];
struct
{
int value;
int firstwr;
}
sem[2];
char savearea[3][4],addr;
int i,s1,s2,seed, exe=NIL;
init()
{
int j;
for (j=0;j<3;j++)
{
pcb[j].id=j;
pcb[j].status='r';
pcb[j].nextwr=NIL;
printf("\n process%d priority?",j+1);
scanf("%d",&i);
pcb[j].priority=i;
}
sem[0].value=1;
sem[0].firstwr=NIL;
sem[1].value=1;
sem[1].firstwr=NIL;
for(i=1;i<3;i++)
for(j=0;j<4;j++)
savearea[i] [j]='0';
}
float random()
{
int m;
if (seed<0) m=-seed;
else m=seed;
seed=(25173*seed+13849)%65536;
return(m/32767.0);
}
timeint(ad)
char ad;
{
float x;
x=random();
if((x<0.33)&&(exe==0))return(FALSE);
if((x<0.66)&&(exe==1))return(FALSE);
if((x<1.0)&&(exe==2))return(FALSE);
savearea[exe][0]=i;
savearea[exe][1]=ad;
pcb[exe].status='t';
printf("times silce interrupt'\n process%d enter into ready.\n",exe+1);
exe=NIL;
return(TRUE);
}
scheduler()
{
int pd;
if ((pd=find())==NIL && exe==NIL)
return(NIL);
if (pd!=NIL)
{
if (exe==NIL)
{
pcb[pd].status='e';
exe=pd;
printf("process%d is executing.\n",exe+1);
}
else if(pcb[pd].priority<pcb [exe].priority)
{
pcb[exe].status='r';
printf("process%d enter into ready\n",exe+1);
pcb[pd].status='e';
exe=pd;
printf("process%d is executing\n",exe+1);
}
}
i=savearea[exe][0];
addr=savearea[exe][1];
return(exe);
}
find()
{
int j,pd=NIL,w=MAXPRI;
for (j=0;j<3;j++)
if(pcb[j].status=='r')
if(pcb[j].priority<w)
{
w=pcb[j].priority;pd=j;
}
if (pd==NIL)
for(j=0;j<3;j++)
if (pcb[j].status=='t')
if (pcb[j].priority<w)
{
w=pcb[j].priority;pd=j;
}
return(pd);
}
p(se,ad)
int se;
char ad;
{
if(--sem[se].value>=0) return(FALSE);
block(se);
savearea[exe][0]=i;
savearea[exe][1]=ad;
exe=NIL;
return(TRUE);
}
block(se)
int se;
{
int w;
printf("process%d is blocked\n",exe+1);
pcb[exe].status='w';
pcb[exe].nextwr=NIL;
if((w=sem[se].firstwr)==NIL)
sem[se].firstwr=exe;
else
{
while(pcb[w].nextwr!=NIL)
w=pcb[w].nextwr;
pcb[w].nextwr=exe;
}
}
v(se,ad)
int se;
char ad;
{
if(++s
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-10-1 17:39 , Processed in 0.197063 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表