巴塞尔协议3资本分类:程序(C++)有错,帮帮忙.有关进程调度的...

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 10:33:31
# include<iostream.h>
# include<stdlib.h>
# include<math.h>
typedef struct process {
int name;
float rtime;
float utime;
struct process *next;
}process;
void main() {
process *rq,*r;
(*rq).next=(process *) malloc (sizeof(process));
r=(*rq).next;
int i,j,n,N;
cout<<"==========================================================="<<endl;
cout<<"=======================进程调度-时间片轮转法======================"<<endl;
cout<<"==========================================================="<<endl;
cout<<"请输入等待运行的进程个数:"<<endl;
cin>>n;
for(i=1;i<=n-1;i++) {
(*r).name=i;
(*r).rtime=fabs(sin(i));
(*r).utime=0;
r=(*r).next;
}
r=(*rq).next;
int x=2;
float rtime=(*r).rtime;
for(i=1;i<=n-1;i++) {
r=(*r).next;
if((*r).rtime>rtime)
rtime=(*r).rtime;
}
N=rtime/x+1;
r=(*rq).next;
int tag[n];////////////////////////////////////////////////////////////////////////////
cout<<"========================运行结果(按完成序)======================="<<endl;
cout<<" 进程名 运行时间 时间片轮 "<<endl;
for(j=1;j<=N;j++) {
for(i=1;i<=n;) {
if(tag[i]=1)
i++;
else {
if((*r).utime+x>=(*r).rtime) {
cout<<" "<<(*r).name<<" "<<(*r).rtime<<" "<<j<<" "<<endl;
tag[i]=1;
(*r).utime=(*r).rtime;
}
else (*r).utime=(*r).utime+x;
}//else
r=(*r).next;
}//for;
r=(*rq).next;
}//for
cout<<"==========================================================="<<endl;
}//main
我知道错误主要在 int tag[n] 这个地方
最近脑袋比较累 懒得想了

C语言没有 int tag[n] 这种定义法的

要么用动态申请内存的方法

int *tag;

tag=(int *)malloc(n*sizeof(int));